[Bug target/60778] shift not folded into shift on x86-64
ubizjak at gmail dot com
gcc-bugzilla@gcc.gnu.org
Mon Sep 27 07:46:00 GMT 2021
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60778
--- Comment #3 from Uroš Bizjak <ubizjak at gmail dot com> ---
(In reply to Andrew Pinski from comment #2)
> Trying 7 -> 8:
> 7: {r87:DI=r89:DI>>0x3;clobber flags:CC;}
> REG_DEAD r89:DI
> REG_UNUSED flags:CC
> 8: r88:DF=[r87:DI*0x8+`mem']
> REG_DEAD r87:DI
> Failed to match this instruction:
> (set (reg:DF 88 [ mem[_1] ])
> (mem:DF (plus:DI (and:DI (reg:DI 89)
> (const_int -8 [0xfffffffffffffff8]))
> (symbol_ref:DI ("mem") [flags 0x2] <var_decl 0x7f6b6efd9c60
> mem>)) [1 mem[_1]+0 S8 A64]))
>
> We have 2->2 combine now but it looks like we don't try to split inside a
> mem ...
This address looks similar to how Alpha implemented unaligned load. It looks
like combine tries to synthesize AND address.
More information about the Gcc-bugs
mailing list