From 176ae843e6fb30c60ee020accacb5e3cf95e3c77 Mon Sep 17 00:00:00 2001
From: Richard Biener <rguenther@suse.de>
Date: Wed, 10 Oct 2012 08:48:47 +0000
Subject: [PATCH] re PR bootstrap/54876 (LTO bootstrap broken, streaming garbage-collected BLOCK)

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.

From-SVN: r192293
---
 gcc/ChangeLog  |  7 +++++++
 gcc/ipa-prop.c | 14 +++++++++++++-
 2 files changed, 20 insertions(+), 1 deletion(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 153abd4..c21398d 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+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.
+
 2012-10-10  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>
 
 	* config.gcc: Enable zEC12 for with-arch and with-tune
diff --git a/gcc/ipa-prop.c b/gcc/ipa-prop.c
index fb2346b..714dd8f 100644
--- a/gcc/ipa-prop.c
+++ b/gcc/ipa-prop.c
@@ -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;
 }
--
libgit2 0.26.0