Hi everyone, So I have been asked to do some work in improving optimisation for AARCH64, and ARM by logical extension since some parts are shared. I've had a look around the code for the Peephole Optimizer for these platforms, and while I've found some potential improvements to generated code, my first desire is to break up the monolithic optimisation functions (e.g. "PeepHoleOptPass1Cpu"), since some of them are well over 1,000 lines long and incredibly unwieldy.
The plan for this is simple... each opcode or set of similar opcodes will get its own function similar to how it is done on x86 platforms (e.g. "OptPass1STR" for STR optimisations). This will make the code much more compartmentalised and easier to maintain. There are some exceptions to this rule but I'm managing them easily enough. Additionally, at a later stage, I want each platform to be able to share the DebugMsg method and the SPeepholeOptimization string, since currently a lot of platforms redeclare DebugMsg but without actually changing anything in the implementation. Obviously I'll submit the changes as patches so they can be properly reviewed and tested, but does this sound like a good idea? Gareth aka. Kit P.S. While I haven't been asked to improve aarch64-linux specifically, if I'm understanding things correctly, there should be very few differences with the actual target platform in regards to calling conventions, for example. _______________________________________________ fpc-devel maillist - fpc-devel@lists.freepascal.org https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-devel