On 4/16/19 10:29 AM, Steve Ellcey wrote:
> Re-ping.  I know there are discussions about bigger changes to fix the
> various failures listed in PR rtl-optimization/87763 but this patch
> at least fixes one of them (gcc.target/aarch64/lsl_asr_sbfiz.c).
So one thing to ponder here is whether or not combine should be handling
the subregs better.  A year or so ago I improved make_field_assignment
to handle some cases where subregs were appearing.  It may be the case
that we just need further refinements to subreg handling.

At some point we call combine_simplify_rtx with:

(set (reg:SI 93)
    (ashift:SI (subreg:SI (sign_extract:DI (subreg:DI (reg:SI 95) 0)
                (const_int 3 [0x3])
                (const_int 0 [0])) 0)
        (const_int 19 [0x13])))

The subregs are obviously inconvenient.  More importantly, I think
they're redundant.  I think that's equivalent to:

(set (reg:SI 93)
    (ashift:SI (sign_extract:SI (reg:SI 95)
                (const_int 3 [0x3])
                (const_int 0 [0]))
        (const_int 19 [0x13])))


At which point I think it'd match the existing pattern in aarch64.md

Thoughts?

jeff

Reply via email to