[fpc-devel] Might need some help with this one

Yuriy Sydorov jura at cp-lab.com
Thu Nov 26 20:04:10 CET 2020


On 26.11.2020 17:34, J. Gareth Moreton via fpc-devel wrote:
> Hi everyone,
> So a couple of people have reported that -O2 sometimes produces bad code under x86_64.  So far it seems isolated to that 
> CPU.
> https://bugs.freepascal.org/view.php?id=38129
> After my own investigations with the attached code, the problem still occurs even if the peephole optimizer is disabled, 
> and the uninitialised register is being allocated within conditional code that is not always executed, rather than 
> before or after it.
> Anyone with any tips on where to dig next (register allocator, node converter etc.) would be most appreciated!

First compile with the "-Ooregvar -alr -sr" switches. You will get the assembler output with imaginary registers and 
notes about register allocations and de-allocations. Inspect if all is correct at this stage. If not then the a code 
generator of some node is buggy.

Then compile with "-Ooregvar -alr". If the issue is present only at this stage, then the bug is in the register allocator.


More information about the fpc-devel mailing list