[PATCH] Fix wrong code on aarch64 due to paradoxical subreg

Segher Boessenkool segher@kernel.crashing.org
Mon Aug 1 23:31:00 GMT 2016


Hi,

On Mon, Aug 01, 2016 at 06:52:54PM +0000, Bernd Edlinger wrote:
> On 08/01/16 19:54, Jeff Law wrote:
> > Looks like you've probably nailed it.  It'll be interesting see if
> > there's any fallout (though our RTL optimizer testing is pretty weak, so
> > even if there were, I doubt we'd catch it).
> 
> If there is, it will probably a performance regression...

I tested building Linux with and without the patch, on many archs.
The few that show differences are:

       alpha   6148872   6148776
        ia64  16946958  16946670
        s390  12345770  12345850
        tile  12016086  12016070

(left before, right after; arm and aarch64 did not build, kernel problems).

So all except s390 generate smaller code even.

> However I think there are more paradoxical subregs generated all over,
> but the aarch64 insv code pattern did trigger more hidden bugs than
> any other port.  It is certainly unfortunate that the major source
> of paradoxical subreg is in a target-dependent code path :(

It is certainly unfortunate that paradoxical subregs exist at all!  :-)


Segher



More information about the Gcc-patches mailing list