Hi everyone,

Specifically to Florian, Jonas and Pierre, I would like to remove the "movz-> and" family of optimisations from the x86 peephole optimiser because the zero-extension commands no longer have the performance penalty that they had back in the 90s.  Both instructions have a read/write dependency, but movzx uses fewer bytes.

On a side-note, I'm exploring OptPass1Movx a bit more closely and found that you can't set Result to True on some of the optimisations (to indicate a change and to re-run Pass 1 under -O3) because they cause an infinite loop if you do (I've been researching ways to cut down on passes and speed up the peephole optimiser).  Additionally, there's also a problem that the optimisations in question sometimes end up 'fighting' with an optimisation in OptPass1MOV that does the opposite.  Either way it makes this part of the codebase somewhat fragile as well as wasting compilation time.

Gareth aka. Kit

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

Reply via email to