This is the mail archive of the
mailing list for the GCC project.
[PR debug/46258] tree cfgcleanup BB marking vs debug stmts
- From: Alexandre Oliva <aoliva at redhat dot com>
- To: gcc-patches at gcc dot gnu dot org
- Date: Tue, 23 Nov 2010 23:24:49 -0200
- Subject: [PR debug/46258] tree cfgcleanup BB marking vs debug stmts
When cleaning up the tree^Wtuples CFG, we will sometimes replace uses of
SSA names with other values.
Problem is, if the only tuples modified in a dominated block are debug
stmts, there may be divergence between -g and -g0 compilations, as there
was with the given testcase in the PR (from the GCC testsuite, so not
included in the patch): a block visited containing a modified debug stmt
was successfully simplified in the cfgcleanup loop that visits only
blocks marked before.
I suppose this may be exposing a weakness in our block marking strategy,
for the block could have been cleaned up in both cases, and after this
change, it isn't before a subsequence full cfgcleanup run. However, in
this patch, I'm only addressing the -g/-g0 divergence.
Regstrapped on x86_64-linux-gnu and i686-pc-linux-gnu. Ok to install?
from Alexandre Oliva <firstname.lastname@example.org>
* tree-cfg.c (replace_uses_by): Don't mark BBs as altered on
--- gcc/tree-cfg.c.orig 2010-11-18 10:37:23.716685868 -0200
+++ gcc/tree-cfg.c 2010-11-18 10:37:31.701412567 -0200
@@ -1570,7 +1570,7 @@ replace_uses_by (tree name, tree val)
- if (cfgcleanup_altered_bbs)
+ if (cfgcleanup_altered_bbs && !is_gimple_debug (stmt))
bitmap_set_bit (cfgcleanup_altered_bbs, gimple_bb (stmt)->index);
/* FIXME. This should go in update_stmt. */
Alexandre Oliva, freedom fighter http://FSFLA.org/~lxoliva/
You must be the change you wish to see in the world. -- Gandhi
Be Free! -- http://FSFLA.org/ FSF Latin America board member
Free Software Evangelist Red Hat Brazil Compiler Engineer