From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 11353 invoked by alias); 18 Jan 2010 19:17:08 -0000 Received: (qmail 11258 invoked by uid 48); 18 Jan 2010 19:16:56 -0000 Date: Mon, 18 Jan 2010 19:17:00 -0000 Message-ID: <20100118191656.11257.qmail@sourceware.org> X-Bugzilla-Reason: CC References: Subject: [Bug tree-optimization/42685] [4.5 Regression] "-fcompare-debug failure" with "-O1 -funroll-loops" (2) In-Reply-To: Reply-To: gcc-bugzilla@gcc.gnu.org To: gcc-bugs@gcc.gnu.org From: "steven at gcc dot gnu dot org" Mailing-List: contact gcc-bugs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-bugs-owner@gcc.gnu.org X-SW-Source: 2010-01/txt/msg02232.txt.bz2 ------- 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] ) [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