------- 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

Reply via email to