[fpc-devel] Progress on reviewing x86_64 optimizer overhaul and node semantic pass
J. Gareth Moreton
gareth at moreton-family.com
Sat Oct 26 16:49:45 CEST 2019
Sorry, I meant a "repeat... until False;" loop, using "Break" or "Exit"
statements when I actually want to leave it, and "Continue" for the
'not-a-goto' statement!
On 26/10/2019 15:47, J. Gareth Moreton wrote:
> Hi Florian,
>
> That seems like a fair assessment. I'll see what I can do, especially
> as I have a design spec to go by, so maybe there's stuff to salvage
> and re-implement.
>
> If I recall, there was a similar TODO in the current code and it just
> got moved, but I'll double-check that.
>
> I've seen 'goto' used a few times in the code but wasn't sure what the
> policy was on that. Generally I use a "repeat... until True;" loop
> with a "Continue;" - is that an okay substitution?
>
> Since you're suggesting more bite-sized chunks, I think the first
> thing I'll do is overhaul the jump optimisations, since they caused
> significant improvements in places that are independent of reducing
> the optimiser passes.
>
> Gareth aka. Kit
>
> On 26/10/2019 13:26, Florian Klämpfl wrote:
>> Am 18.10.19 um 18:07 schrieb J. Gareth Moreton:
>>> Hi everyone,
>>>
>>> How is everyone doing? Sorry for my silence - been a bit tied up
>>> with things in life. Anyway, that aside, has there been any further
>>> progress on reviewing the x86_64 optimizer overhaul over at
>>> https://bugs.freepascal.org/view.php?id=34628? I ask because I've
>>> sort-of blocked myself in any further improvements to the peephole
>>> optimizer.
>>
>> I had meanwhile a look at it and to be honest, I am against applying
>> the remainders in its current form.
>> - First, the patches are inter-winded and the single patches do not
>> cover one single topic. Today, using e.g. TortoiseGit on Windows
>> (sorry, on Linux there is no tool which comes close) such patches can
>> be re-arranged without too much hazzle.
>> - Breaking the principle of the multiple optimizer passes is
>> reasonable on the one hand, on the other hand it makes complicated
>> code even more complicated and in particular as only the optimizer
>> benefits, I see no reason to do so. In particular in combination with
>> using gotos, the price being payed regarding maintainability is very
>> high.
>> - Also things like ConditionalJumpShortcut in aoptx86.pas containing
>> arm and aarch64 defines does not convince me regarding the patches.
>> - Patches contains open todo: "TODO: FIXME removing the first
>> instruction fails"
>>
>> I would really like to see parts of the patch applied, but this
>> requires that it is re-arranged in small, oversee-able changes.
>> _______________________________________________
>> fpc-devel maillist - fpc-devel at lists.freepascal.org
>> https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel
>>
>
--
This email has been checked for viruses by Avast antivirus software.
https://www.avast.com/antivirus
More information about the fpc-devel
mailing list