[fpc-devel] Finally fixed that MOVZX/SX optimisation!
J. Gareth Moreton
gareth at moreton-family.com
Thu Feb 20 21:20:56 CET 2020
The first patch, movzx-choices.patch, is already part of the trunk. I
applied movxx-self-extra.patch amd movx-new-tests.patch (which just
contains the tests) to the trunk, which was r44195 at the time, and then
also applied just movx-new-tests.patch to a separate branch, then ran
regression tests on both branches and compared the results.
Gareth aka. Kit
On 20/02/2020 17:10, Florian Klämpfl wrote:
> Am 18.02.20 um 23:04 schrieb J. Gareth Moreton:
>> Hi everyone,
>>
>> So I had some difficulty reproducing a regression with my latest
>> optimisation patch, but a couple of days ago I finally reproduced it
>> and isolated the cause. As explained in the topic, my optimisation
>> was faulty with the instruction pair "movb $-63,%al; movsbw %al,%ax"
>> and other similar constructs - negative constants weren't handled
>> properly.
>>
>> It seems that not all regressions are caught when you run the test
>> suite conventionally, and you have to specify additional options like
>> "-O4", which may cause other failures to occur if a test is not
>> expecting any kind of intense optimisation, for example. In
>> response, over here at https://bugs.freepascal.org/view.php?id=36687,
>> I've introduced two new tests that are copies of the ones that
>> failed, but which explicitly add -O4 to the default compiler
>> options. Besides covering the fault in my patch, I can see these
>> tests proving useful later on because I can see future peephole
>> optimisations in the compiled assembly language (e.g. the following
>> triplet appears... "movw $65280,%ax; cmp $65280,%ax; je @lbl"...
>> logical analysis shows that the conditional branch is always taken).
>
> Yes, but in this case, there is something missed at the node level
> optimizer. Such code should not be generated.
>
>>
>> Long story short, the patch /finally/ works
>
> Which ones did you exactly apply? All three in the bug tracker at once?
>
>> and a full run of the regression suite on i386-win32 and
>> x86_64-win64, including the two new tests, show no new failures.
>>
>> Gareth aka. Kit
>>
>>
>> _______________________________________________
>> fpc-devel maillist - fpc-devel at lists.freepascal.org
>> https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel
>>
>
> _______________________________________________
> fpc-devel maillist - fpc-devel at lists.freepascal.org
> https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel
>
More information about the fpc-devel
mailing list