http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54128
--- Comment #6 from Steve Ellcey <sje at gcc dot gnu.org> 2012-08-10 20:10:56
UTC ---
It looks like the code generation is going different (between -g and no -g)
during the IRA/reload phase. With the cut down test case and using -O2 -g
the x.i.195r.reload file (for debug) contains:
insn=71, live_throughout: 4, 5, 6, 7, 28, 29, 79, 209, dead_or_set: 2
Insn 71 is:
(debug_insn 71 23 25 3 (var_location:SI D#1 (reg:SI 2 $2)) -1
(nil))
(debug_insn 25 71 85 3 (var_location:DI step_c (concatn/v:DI [
(debug_expr:SI D#1)
(debug_expr:SI D#2)
])) x.i:55 -1
(nil))
but something about this is causing IRA to think that $2 is a used psuedo
register that cannot be used for anything else so it uses $3 instead and
that is where the debug and non-debug code differs.