Commit 50d4421c by Richard Biener Committed by Richard Biener

tree-cfg.c (verify_expr_no_block): New function.

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
parent 839b422f
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 ...
(DECL_HAS_DEBUG_EXPR_P): ... this. Guard properly.
* tree.c (copy_node_stat): Do not copy DECL_HAS_DEBUG_EXPR_P.
......
......@@ -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;
}
......
......@@ -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))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment