------- Comment #3 from jakub at gcc dot gnu dot org 2010-03-23 17:24 ------- Created an attachment (id=20173) --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=20173&action=view) gcc45-pr43479-test.patch
This testcase is fixed on x86_64-linux by the PR19192 proposed patch (second or third). Unfortunately it still fails on i686-linux. DEBUG_INSNs look sane in *.asmcons: (debug_insn 9 6 10 2 pr43479.c:8 (var_location:SI l (plus:SI (reg/v:SI 62 [ l ]) (const_int 1 [0x1]))) -1 (nil)) (debug_insn 10 9 11 2 pr43479.c:10 (var_location:SI h (reg/v:SI 64 [ n ])) -1 (nil)) (debug_insn 11 10 12 2 pr43479.c:12 (var_location:SI i (reg/v:SI 61 [ k ])) -1 (nil)) (debug_insn 12 11 13 2 pr43479.c:13 (var_location:SI k (plus:SI (reg/v:SI 61 [ k ]) (const_int 1 [0x1]))) -1 (nil)) (debug_insn 13 12 14 2 pr43479.c:17 (var_location:SI j (reg/v:SI 63 [ m ])) -1 (nil)) (debug_insn 14 13 15 2 pr43479.c:18 (var_location:SI m (plus:SI (reg/v:SI 63 [ m ]) (const_int 1 [0x1]))) -1 (nil)) where all the pseudos are initialized like: (insn 3 2 4 2 pr43479.c:7 (set (reg/v:SI 62 [ l ]) (mem/c/i:SI (plus:SI (reg/f:SI 16 argp) (const_int 4 [0x4])) [0 l+0 S4 A32])) 47 {*movsi_1} (expr_list:REG_EQUIV (mem/c/i:SI (plus:SI (reg/f:SI 16 argp) (const_int 4 [0x4])) [0 l+0 S4 A32]) (nil))) But in *.ira dump all 4 debug_insns are clobber (const_int 0), likely reload doesn't figure out that it could use REG_EQUIV... -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=43479