tree-cfg.c (verify_expr_no_block): New function.
authorRichard Biener <rguenther@suse.de>
Thu, 21 Mar 2013 11:54:27 +0000 (11:54 +0000)
committerRichard Biener <rguenth@gcc.gnu.org>
Thu, 21 Mar 2013 11:54:27 +0000 (11:54 +0000)
2013-03-21  Richard Biener  <rguenther@suse.de>

* tree-cfg.c (verify_expr_no_block): New function.
(verify_expr_location_1): Verify that neither DECL_DEBUG_EXPR
nor DECL_VALUE_EXPR have locations with associated blocks.
* tree-ssa-live.c (clear_unused_block_pointer_1): Remove.
(clear_unused_block_pointer): Remove code dealing with
blocks in DECL_DEBUG_EXPR locations.

From-SVN: r196865

gcc/ChangeLog
gcc/tree-cfg.c
gcc/tree-ssa-live.c

index 499e9d30fb772063076a4f5dd3a95c9d29dde0a6..a4b076329c95959f2343af21d51eca81c7172edf 100644 (file)
@@ -1,3 +1,12 @@
+2013-03-21  Richard Biener  <rguenther@suse.de>
+
+       * tree-cfg.c (verify_expr_no_block): New function.
+       (verify_expr_location_1): Verify that neither DECL_DEBUG_EXPR
+       nor DECL_VALUE_EXPR have locations with associated blocks.
+       * tree-ssa-live.c (clear_unused_block_pointer_1): Remove.
+       (clear_unused_block_pointer): Remove code dealing with
+       blocks in DECL_DEBUG_EXPR locations.
+
 2013-03-21  Richard Biener  <rguenther@suse.de>
 
        * tree.h (DECL_DEBUG_EXPR_IS_FROM): Rename to ...
index 6e6b2c5525d71364551faaef5acc984f1841c3c1..c3771e54fd0f7983754d4de8c07c92ca1859cfa3 100644 (file)
@@ -4516,6 +4516,24 @@ verify_location (pointer_set_t *blocks, location_t loc)
   return false;
 }
 
+/* Called via walk_tree.  Verify that expressions have no blocks.  */
+
+static tree
+verify_expr_no_block (tree *tp, int *walk_subtrees, void *)
+{
+  if (!EXPR_P (*tp))
+    {
+      *walk_subtrees = false;
+      return NULL;
+    }
+
+  location_t loc = EXPR_LOCATION (*tp);
+  if (LOCATION_BLOCK (loc) != NULL)
+    return *tp;
+
+  return NULL;
+}
+
 /* Called via walk_tree.  Verify locations of expressions.  */
 
 static tree
@@ -4527,7 +4545,17 @@ verify_expr_location_1 (tree *tp, int *walk_subtrees, void *data)
       && DECL_HAS_DEBUG_EXPR_P (*tp))
     {
       tree t = DECL_DEBUG_EXPR (*tp);
-      tree addr = walk_tree (&t, verify_expr_location_1, blocks, NULL);
+      tree addr = walk_tree (&t, verify_expr_no_block, NULL, NULL);
+      if (addr)
+       return addr;
+    }
+  if ((TREE_CODE (*tp) == VAR_DECL
+       || TREE_CODE (*tp) == PARM_DECL
+       || TREE_CODE (*tp) == RESULT_DECL)
+      && DECL_HAS_VALUE_EXPR_P (*tp))
+    {
+      tree t = DECL_VALUE_EXPR (*tp);
+      tree addr = walk_tree (&t, verify_expr_no_block, NULL, NULL);
       if (addr)
        return addr;
     }
index 713458f8e98a1b31bf6eb35520fa5fecfd0719fb..7c763eacecbc117fb19ddd5301e2494500904444 100644 (file)
@@ -620,11 +620,6 @@ clear_unused_block_pointer_1 (tree *tp, int *, void *)
   if (EXPR_P (*tp) && TREE_BLOCK (*tp)
       && !TREE_USED (TREE_BLOCK (*tp)))
     TREE_SET_BLOCK (*tp, NULL);
-  if (TREE_CODE (*tp) == VAR_DECL && DECL_HAS_DEBUG_EXPR_P (*tp))
-    {
-      tree debug_expr = DECL_DEBUG_EXPR (*tp);
-      walk_tree (&debug_expr, clear_unused_block_pointer_1, NULL, NULL);
-    }
   return NULL_TREE;
 }
 
@@ -636,15 +631,6 @@ clear_unused_block_pointer (void)
 {
   basic_block bb;
   gimple_stmt_iterator gsi;
-  tree t;
-  unsigned i;
-
-  FOR_EACH_LOCAL_DECL (cfun, i, t)
-    if (TREE_CODE (t) == VAR_DECL && DECL_HAS_DEBUG_EXPR_P (t))
-      {
-       tree debug_expr = DECL_DEBUG_EXPR (t);
-       walk_tree (&debug_expr, clear_unused_block_pointer_1, NULL, NULL);
-      }
 
   FOR_EACH_BB (bb)
     for (gsi = gsi_start_bb (bb); !gsi_end_p (gsi); gsi_next (&gsi))