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