Only one sse2 register used
Original Reporter info from Mantis: Vincent
-
Reporter name: Vincent Snijders
Original Reporter info from Mantis: Vincent
- Reporter name: Vincent Snijders
Description:
If te body of a procedure gets too complicated, only xmm0 is used for floating point calculations.
Steps to reproduce:
Compile the attached program with -al and inspect the generated assembler:
# Var x_coord located in register mreg0md # Var y_coord located in register mreg0md # Var range located in register mreg0md # Var gapx located in register mreg0md # Var gapy located in register mreg0md # Var size located in register mreg0md # Var a located in register mreg0md # Var b located in register mreg0md # Var ac located in register mreg0md # Var bc located in register mreg0md # Var b1 located in register mreg0md
Now compile with -dHideBug. It removes a purely integer loop from the code. Now all xmm regs are used:
# Var x_coord located in register mreg0md # Var y_coord located in register mreg0md # Var range located in register mreg1md # Var gapx located in register mreg0md # Var gapy located in register mreg0md # Var size located in register mreg3md # Var a located in register mreg1md # Var b located in register mreg2md # Var ac located in register mreg6md # Var bc located in register mreg5md # Var b1 located in register mreg4md
I used the following compiler options:
-S2cgi -O2rp3 -XX -al
Additional information:
fpc 2.0.4 gives an IE, but I guess the 2.0 series is not maintained anymore.
pbigmandle.pas(17,2) Fatal: Internal error 200506042
Mantis conversion info:
- Mantis ID: 7533
- OS: Windows
- OS Build: XP Home SP2
- Build: r4772
- Platform: i386
- Version: 2.2.0