This is the mail archive of the 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]

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

for gcc/ChangeLog
from  Alexandre Oliva  <>

	PR debug/46258
	* tree-cfg.c (replace_uses_by): Don't mark BBs as altered on
	debug stmts.

Index: gcc/tree-cfg.c
--- 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)
 	  size_t i;
 	  fold_stmt_inplace (stmt);
-	  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
You must be the change you wish to see in the world. -- Gandhi
Be Free! --   FSF Latin America board member
Free Software Evangelist      Red Hat Brazil Compiler Engineer

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