------- Comment #22 from pinskia at gcc dot gnu dot org 2010-07-14 16:50 ------- (In reply to comment #21) > Even if it did not voilate aliasing rules, the IR looks good:
The expansion looks incorrect though: (insn 39 38 40 t.cc:55 (set (reg:DI 107) (vec_select:DI (reg:V2DI 79 [ D.4999 ]) (parallel [ (const_int 1 [0x1]) ]))) -1 (nil)) (insn 40 39 41 t.cc:55 (set (reg:DI 108) (vec_select:DI (reg:V2DI 79 [ D.4999 ]) (parallel [ (const_int 1 [0x1]) ]))) -1 (nil)) (insn 41 40 42 t.cc:55 (set (reg:DI 109) (vec_select:DI (reg:V2DI 79 [ D.4999 ]) (parallel [ (const_int 0 [0x0]) ]))) -1 (nil)) (insn 42 41 43 t.cc:55 (set (reg:DI 110) (vec_select:DI (reg:V2DI 79 [ D.4999 ]) (parallel [ (const_int 0 [0x0]) ]))) -1 (nil)) (insn 43 42 44 t.cc:55 (set (reg:SI 37 r8) (subreg:SI (reg:DI 107) 0)) -1 (nil)) (insn 44 43 45 t.cc:55 (set (reg:SI 2 cx) (subreg:SI (reg:DI 108) 0)) -1 (nil)) (insn 45 44 46 t.cc:55 (set (reg:SI 1 dx) (subreg:SI (reg:DI 109) 0)) -1 (nil)) (insn 46 45 47 t.cc:55 (set (reg:SI 4 si) (subreg:SI (reg:DI 110) 0)) -1 (nil)) Please file that as a different bug. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44900