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