Hi, According to the plan discussed in the context of the recent switch to MODE_CC of the VAX backend I have been looking into switching the backend to LRA as well.
It has turned out quite straightforward itself, with just a couple of minor issues triggered with a flip to LRA, one causing a build failure with target libatomic and another causing a C testsuite regression. Also I have come across a piece of dead code which has never ever been used for anything and it is unclear to me what its intended purpose was. I have come up with this small patch series then, bundled together for easier reference although the individual changes are independent from each other. I think 3/3 is worth backporting to GCC 11 at one point, perhaps 11.2, so that it can be easily picked downstream, as it improves code generation with old reload and we may not have another major release still using it. OTOH switching to LRA regresses code generation seriously, by making the indexed and indirect VAX address modes severely underutilised, so while with these changes in place the backend can be switched to LRA with just a trivial to remove the redefinition of TARGET_LRA_P, I think it is not yet the right time to do it. It is not a hard show-stopper though, so while I plan to look into LRA now to figure out what is missing there that the old reload has to satisfy the VAX backend, the switch to LRA can now be made anytime if so required and I am preempted for whatever reason (and nobody else gets to it). Questions, comments, OK to apply? Maciej