http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53823

--- Comment #2 from John David Anglin <danglin at gcc dot gnu.org> 2012-07-12 
01:43:11 UTC ---
This hunk of RTL was generated in .expand for function f:

;; D.1356_3 = D.1355_2 * 2863311531;
(insn 9 8 10 (set (reg:SI 104)
        (subreg:SI (reg:DI 96 [ D.1355 ]) 4))
/test/gnu/gcc/gcc/gcc/testsuite/gc
c.c-torture/execute/930921-1.c:4 -1
     (nil))

(insn 10 9 11 (set (subreg:SI (reg:DI 97 [ D.1356 ]) 0)
        (ashift:SI (reg:SI 104)
            (const_int 31 [0x1f])))
/test/gnu/gcc/gcc/gcc/testsuite/gcc.c-torture/execute/930921-1.c:4 -1
     (expr_list:REG_EQUAL (ashift:SI (subreg:SI (reg:DI 96 [ D.1355 ]) 4)
            (const_int 31 [0x1f]))
        (nil)))

(insn 11 10 0 (set (subreg:SI (reg:DI 97 [ D.1356 ]) 4)
        (const_int 0 [0]))
/test/gnu/gcc/gcc/gcc/testsuite/gcc.c-torture/execute/930921-1.c:4 -1
     (nil))

Looks wrong to me.  Fails when x=1.

Reply via email to