<HTML>
Following advice from Florian, I've split my submission into five separate patches so they are easier to test.  It also now compiles under x86_64-linux.  It seems that there's an apparent fault with one of the MOV optimisations that was causing incorrect code to be generated in some instances.  I have a good idea as to what's going on and can try to fix this at another time.<br>
<br>
<div>Hopefully now it's stable enough for time metrics to be taken and to confirm it doesn't break other platforms.</div><div><br>
</div><div>Some more refactoring should be performed down the line; I plan to do this once my code is confirmed reasonable and I begin adapting it for i386, where there's a bounty for speed gains!<br>
<br>
Find all the new patch files over here: https://bugs.freepascal.org/view.php?id=34628 - note that some of the patches require others to work; prerequisite information is given in the first note.<br>
</div><br>
Gareth aka. Kit<br>
</HTML>