Patchwork Fix LTO bootstrap (PR54876)

login
register
mail settings
Submitter Richard Guenther
Date Oct. 10, 2012, 8:34 a.m.
Message ID <alpine.LNX.2.00.1210101032530.4063@zhemvz.fhfr.qr>
Download mbox | patch
Permalink /patch/190583/
State New
Headers show

Comments

Richard Guenther - Oct. 10, 2012, 8:34 a.m.
The previous fix for clearing EXPR_LOCATION (and thus LOCATION_BLOCK)
from jump functions was incomplete as it didn't consider sub-expressions.
Fixed as follows.

LTO bootstrapped on x86_64-unknown-linux-gnu, applied to trunk.

Richard.

2012-10-10  Richard Biener  <rguenther@suse.de>

	PR middle-end/54876
	* ipa-prop.c (prune_expression_for_jf_1): New function.
	(prune_expression_for_jf): Clear EXPR_LOCATION for all
	sub-expressions as well.

Patch

Index: gcc/ipa-prop.c
===================================================================
--- gcc/ipa-prop.c	(revision 192255)
+++ gcc/ipa-prop.c	(working copy)
@@ -287,6 +287,18 @@  ipa_print_all_jump_functions (FILE *f)
     }
 }
 
+/* Worker for prune_expression_for_jf.  */
+
+static tree
+prune_expression_for_jf_1 (tree *tp, int *walk_subtrees, void *)
+{
+  if (EXPR_P (*tp))
+    SET_EXPR_LOCATION (*tp, UNKNOWN_LOCATION);
+  else
+    *walk_subtrees = 0;
+  return NULL_TREE;
+}
+
 /* Return the expression tree EXPR unshared and with location stripped off.  */
 
 static tree
@@ -295,7 +307,7 @@  prune_expression_for_jf (tree exp)
   if (EXPR_P (exp))
     {
       exp = unshare_expr (exp);
-      SET_EXPR_LOCATION (exp, UNKNOWN_LOCATION);
+      walk_tree (&exp, prune_expression_for_jf_1, NULL, NULL);
     }
   return exp;
 }