Optimizer/cg bugs?
Original Reporter info from Mantis: marco @marcoonthegit
-
Reporter name: Marco van de Voort
Original Reporter info from Mantis: marco @marcoonthegit
- Reporter name: Marco van de Voort
Description:
Basically the problem construct is creating a 64-bit unsigned from two 32-bit unsigned using the admitted braindead:
f.size:=F.FindData.NFileSizeLow+(qword(maxdword)+1)*F.FindData.NFileSizeHigh;
However the code just before seems to matter (at least with 2.3.1), so it might be reg alloc related and not optimizer an sich.
The example prints the afaik correct answer 0002020200010101 with 2.3.1 without and with -O, but 0001010100010101 with -O3 and -O2.
2.2.4 is even stranger and prints 0000000000030303
I happened to run into this when checking if the multiplication was optimized away and I couldn't make sense of the generated assembler.
I hoped I dewin32fied the example succesfully.
Mantis conversion info:
- Mantis ID: 13536
- Version: 2.3.1
- Fixed in version: 2.4.0
- Fixed in revision: 13023 (#a4bf9100)
- Monitored by: » crossbuilder (Burkhard Carstens), » @marcoonthegit (Marco van de Voort)