------- Comment #13 from rguenth at gcc dot gnu dot org 2009-08-13 12:25 ------- Err, the expansion is already completely bogus:
;; *vect_pa.50 = [vec_cond_expr] VEC_COND_EXPR < *vect_pa.44 != { 5, 5 } , { 12, 12 } , { 10, 10 } > ; (insn 7 6 8 t.c:12 (set (reg:V2DI 63) (mem/u/c/i:V2DI (symbol_ref/u:DI ("*.LC0") [flags 0x2]) [2 S16 A128])) -1 (expr_list:REG_EQUAL (const_vector:V2DI [ (const_int 5 [0x5]) (const_int 5 [0x5]) ]) (nil))) (insn 8 7 9 t.c:12 (set (reg:V2DI 64) (mem/u/c/i:V2DI (symbol_ref/u:DI ("*.LC1") [flags 0x2]) [2 S16 A128])) -1 (expr_list:REG_EQUAL (const_vector:V2DI [ (const_int 12 [0xc]) (const_int 12 [0xc]) ]) (nil))) (insn 9 8 10 t.c:12 (set (reg:V2DI 65) (mem/u/c/i:V2DI (symbol_ref/u:DI ("*.LC2") [flags 0x2]) [2 S16 A128])) -1 (expr_list:REG_EQUAL (const_vector:V2DI [ (const_int 10 [0xa]) (const_int 10 [0xa]) ]) (nil))) (insn 10 9 0 t.c:12 (set (mem:V2DI (reg/f:DI 58 [ vect_pa.50 ]) [2 S16 A128]) (reg:V2DI 62)) -1 (nil)) so - we load three constants and store the uninitialized reg 62. Which means the optabs for this case are broken. -- rguenth at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |uros at gcc dot gnu dot org Component|tree-optimization |target http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41019