From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 10533 invoked by alias); 1 Jan 2010 18:43:19 -0000 Received: (qmail 10458 invoked by uid 48); 1 Jan 2010 18:43:03 -0000 Date: Fri, 01 Jan 2010 18:43:00 -0000 Message-ID: <20100101184303.10457.qmail@sourceware.org> X-Bugzilla-Reason: CC References: Subject: [Bug debug/42455] [4.5 Regression] "-fcompare-debug failure" at -O2 in 'recent' builds In-Reply-To: Reply-To: gcc-bugzilla@gcc.gnu.org To: gcc-bugs@gcc.gnu.org From: "rguenth 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/msg00048.txt.bz2 ------- Comment #5 from rguenth at gcc dot gnu dot org 2010-01-01 18:43 ------- It's a false positive, the difference is --- t2.gkd 2010-01-01 19:05:33.000000000 +0100 +++ t2.gk.gkd 2010-01-01 19:05:33.000000000 +0100 @@ -45,22 +45,22 @@ ])# {*movdi_xor_rex64} (expr_list:REG_UNUSED (reg:CC 17 flags) (nil))) (insn:TI# 0 0 t2.ii:793 (set (mem/s/c:DI (plus:DI (reg/f:DI 7 sp) - (const_int 64 [0x40])) [5 ISRA.15+0 S8 A128]) + (const_int 64 [0x40])) [5 ISRA.16+0 S8 A128]) (reg:DI 2 cx [orig:62 D.xxxx._M_t._M_impl._M_header ] [62]))# {*movdi_1 _rex64} (nil)) and similar others. Thus we create a temporary variable name which includes a UID which comes from gimplify.c:create_tmp_var_name. The extra temporary comes from extra early SRA we do when building with -g: -! Disqualifying iter - No scalar replacements to be created. -Marking D.3480 offset: 0, size: 8: to be replaced. +Candidate (3488): D.3488 +Marking D.3477 offset: 0, size: 8: to be replaced. -Access trees for D.3480 (UID: 3480): -access { base = (3480)'D.3480', offset = 0, size = 8, expr = D.3480._M_node, ty pe = bool, grp_write = 1, grp_read = 1, grp_hint = 0, grp_covered = 1, grp_unsca larizable_region = 0, grp_unscalarized_data = 0, grp_partial_lhs = 0, grp_differ ent_types = 1, grp_to_be_replaced = 1, grp_maybe_modified = 0, grp_not_necessari lly_dereferenced = 0 +Access trees for D.3477 (UID: 3477): +access { base = (3477)'D.3477', offset = 0, size = 8, expr = D.3477._M_node, ty pe = bool, grp_write = 1, grp_read = 1, grp_hint = 0, grp_covered = 1, grp_unsca larizable_region = 0, grp_unscalarized_data = 0, grp_partial_lhs = 0, grp_differ ent_types = 0, grp_to_be_replaced = 1, grp_maybe_modified = 0, grp_not_necessari lly_dereferenced = 0 + +Marking iter offset: 0, size: 8: to be replaced. + +Access trees for iter (UID: 3262): +access { base = (3262)'iter', offset = 0, size = 8, expr = iter._M_node, type = bool, grp_write = 1, grp_read = 1, grp_hint = 0, grp_covered = 1, grp_unscalari zable_region = 0, grp_unscalarized_data = 0, grp_partial_lhs = 0, grp_different_ types = 0, grp_to_be_replaced = 1, grp_maybe_modified = 0, grp_not_necessarilly_ dereferenced = 0 I am testing a patch. But in reality it will paper over a problem in SRA that causes code-generation differences dependent on oder of analyzing accesses. -- rguenth at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |jamborm at gcc dot gnu dot | |org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42455