Hi everyone,

Being on a working Intel laptop full-time again, I've gone back to looking at the Peephole Optimizer like I always used to do. One thing I've been focusing on is an attempt to reduce the number of passes of the Peephole Optimizer, since a single pass amounts to stepping through every instruction in the pre-compiled assembly language, which can get long for complex routines.

https://bugs.freepascal.org/view.php?id=37959

The main change is that the mandatory second run of pass 1 has been removed, and the upper limit on the number of iterations performed is governed by whether the setting is -O2 (2), -03 (5) or -O4 (8), and 1 otherwise - details are in the bug report.  As a result -O1 will perform slightly worse, but I gathered from past conversations that this is acceptable as this is generally only done when debugging - if it's not, then this can be easily fixed by changing the upper limit from 1 to 2 for -O1.  -O2 and above should be exactly the same in regards to the code that is produced (if it's not, then there's likely something wrong with an optimisation not setting Result to True when it should have done).  So far, I've had success with the RTL and Lazraus when it comes to this.

Ultimately, there should be a slight increase in compiler performance under high optimisation settings... at least that's the theory.  Under x86 platforms at least, I've been making sure optimisations do set Result to True when they should.

Gareth aka. Kit


--
This email has been checked for viruses by Avast antivirus software.
https://www.avast.com/antivirus

_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel

Reply via email to