------- Comment #5 from steven at gcc dot gnu dot org  2010-01-18 19:16 -------
Register number differences appear - again - because a USE operand of a
DEBUG_INSN ends up in a web of its own:

--- R1web/pr42685-2.c.167r.web  2010-01-18 11:11:38.000000000 -0800
+++ R2web/pr42685-2.c.167r.web  2010-01-18 11:11:38.000000000 -0800
@@ -7,275 +7,323 @@
 df_worklist_dataflow_doublequeue:n_basic_blocks 55 n_edges 83 count 108 (   
2)
 df_worklist_dataflow_doublequeue:n_basic_blocks 55 n_edges 83 count 109 (   
2)
 Web oldreg=386 newreg=401
-Updating insn 82 (386->401)
-deferring rescan insn with uid = 82.
-Web oldreg=371 newreg=402
-Updating insn 63 (371->402)
-deferring rescan insn with uid = 63.
-Web oldreg=375 newreg=403
-Updating insn 394 (375->403)
-deferring rescan insn with uid = 394.
+Updating insn 96 (386->401)
+deferring rescan insn with uid = 96.
+Web oldreg=375 newreg=402
+Updating insn 72 (375->402)
+deferring rescan insn with uid = 72.
+Web oldreg=371 newreg=403
+Updating insn 75 (371->403)
+deferring rescan insn with uid = 75.
+Updating insn 468 (375->402)
+deferring rescan insn with uid = 468.

...

@@ -413,12 +474,19 @@
             (label_ref #)
             (pc)))# {*br_true} (expr_list:REG_BR_PROB (const_int 7100
[0x1bbc])
         (nil))
- -> 65)
+ -> 77)

 (note# # # 10 [bb 10] NOTE_INSN_BASIC_BLOCK)

+(debug_insn# # # 10 pr42685-2.c:19 (var_location:DI D#2 (zero_extend:DI
(reg/v:SI 402 [ i ])))# (nil))
+
+(debug_insn# # # 10 pr42685-2.c:19 (var_location:DI D#1 (mult:DI
(debug_expr:DI D#2)
+        (const_int 4 [0x4])))# (nil))
+
+(debug_insn# # # 10 pr42685-2.c:19 (var_location:DI s (clobber (const_int 0
[0x0])))# (nil))
+
 (insn# # # 10 pr42685-2.c:10 (set (reg:SI 120 out0)
-        (mem/s/j:SI (reg:DI 402 [ ivtmp.5 ]) [0 D.1998->i+0 S4 A32]))#
{movsi_internal} (nil))
+        (mem/s/j:SI (reg:DI 403 [ ivtmp.5 ]) [0 D.1998->i+0 S4 A32]))#
{movsi_internal} (nil))

 (call_insn# # # 10 pr42685-2.c:10 (parallel [
             (call (mem:DI (symbol_ref:DI ("baz") [flags 0x41]  <function_decl
# baz>) [0 S8 A64])


This whole compare-debug stuff makes no sense to me, so I'm not even going to
try to come up with a fix. IMHO the proper fix would be to never even try to
rename a web that consists of just a single USE. I don't see how that is any
more "right" than no debug info at all since no DEF reaches the USE (i.e.
uninitialized) so any value represented in the debug info is fair and
reasonable.


-- 

steven at gcc dot gnu dot org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         AssignedTo|steven at gcc dot gnu dot   |unassigned at gcc dot gnu
                   |org                         |dot org
             Status|ASSIGNED                    |NEW


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

Reply via email to