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@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

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

Reply via email to