https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110411
Peter Bergner <bergner at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |ice-on-valid-code CC| |linkw at gcc dot gnu.org, | |meissner at gcc dot gnu.org, | |segher at gcc dot gnu.org Ever confirmed|0 |1 Status|UNCONFIRMED |NEW Last reconfirmed| |2023-06-26 Target| |powerpc*-*-* --- Comment #1 from Peter Bergner <bergner at gcc dot gnu.org> --- I'll note this was reported by our Linux kernel team. The problem here is the expression we assign to src ends up looking like an altivec and:DI memory address and that type of address is invalid for a lxvp/stxvp instruction. fwprop seems to be creating it: propagating insn 7 into insn 9, replacing: (set (reg:DI 123 [ src ]) (and:DI (reg:DI 122) (reg:DI 124 [ ptr ]))) successfully matched this instruction to anddi3_mask: (set (reg:DI 123 [ src ]) (and:DI (reg:DI 124 [ ptr ]) (const_int -16 [0xfffffffffffffff0]))) rescanning insn with uid = 9. updating insn 9 in-place verify found no changes in insn with uid = 9. propagating insn 9 into insn 10, replacing: (set (reg:OO 125 [ MEM <char[1:32]> [(void *)src_4] ]) (mem:OO (reg:DI 123 [ src ]) [0 MEM <char[1:32]> [(void *)src_4]+0 S32 A128])) successfully matched this instruction to *movoo: (set (reg:OO 125 [ MEM <char[1:32]> [(void *)src_4] ]) (mem:OO (and:DI (reg:DI 124 [ ptr ]) (const_int -16 [0xfffffffffffffff0])) [0 MEM <char[1:32]> [(void *)src_4]+0 S32 A128])) Clearly, movoo shouldn't allow these types of addresses.