This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug debug/42455] [4.5 Regression] "-fcompare-debug failure" at -O2 in 'recent' builds
- From: "rguenth at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 1 Jan 2010 18:43:03 -0000
- Subject: [Bug debug/42455] [4.5 Regression] "-fcompare-debug failure" at -O2 in 'recent' builds
- References: <bug-42455-14164@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- 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