https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93919
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Target|x86_64-*-*, i?86-*-* |x86_64-*-*, i?86-*-*, | |aarch64-linux-gnu Status|UNCONFIRMED |NEW Last reconfirmed| |2020-02-25 Component|tree-optimization |middle-end Target Milestone|--- |10.0 Ever confirmed|0 |1 --- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> --- vector(8) char16_t vect__20.10; //8*2 = 16 bytes vect__19.9_55 = MEM <vector(16) char> [(vector(32) char *)&seq]; vect__20.10_56 = [vec_unpack_lo_expr] vect__19.9_55; vect__20.10_57 = [vec_unpack_hi_expr] vect__19.9_55; MEM <vector(8) char16_t> [(char16_t *)&out] = vect__20.10_56; MEM <vector(8) char16_t> [(char16_t *)&out + 16B] = vect__20.10_57; vect__20.15_63 = MEM <vector(2) char> [(vector(32) char *)&seq + 16B]; vect__33.16_58 = (vector(2) char16_t) vect__20.15_63; MEM <vector(2) char16_t> [(char16_t *)&out + 32B] = vect__33.16_58; ;; MEM <vector(2) char16_t> [(char16_t *)&out + 32B] = vect__33.16_58; (insn 165 164 166 (set (reg:SI 251) (sign_extend:SI (mem/c:HI (plus:DI (reg/f:DI 77 virtual-stack-vars) (const_int -80 [0xffffffffffffffb0])) [0 MEM <vector(2) char> [(vector(32) char *)&seq + 16B]+0 S2 A128]))) "t87656.c":14:14 -1 (nil)) (insn 166 165 0 (set (mem/c:SI (plus:DI (reg/f:DI 77 virtual-stack-vars) (const_int -32 [0xffffffffffffffe0])) [1 MEM <vector(2) char16_t> [(char16_t *)&out + 32B]+0 S4 A256]) (reg:SI 251)) "t87656.c":14:14 -1 (nil)) HuH? We get this bad code also on aarch64-linux-gnu.