This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug debug/42455] [4.5 Regression] "-fcompare-debug failure" at -O2 in 'recent' builds



------- 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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]