From: Richard Biener Date: Thu, 21 Mar 2013 11:54:27 +0000 (+0000) Subject: tree-cfg.c (verify_expr_no_block): New function. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=50d4421cb29f3d9bc1fd5b06dbde5b19b82a14e3;p=gcc.git tree-cfg.c (verify_expr_no_block): New function. 2013-03-21 Richard Biener * 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 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 499e9d30fb7..a4b076329c9 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2013-03-21 Richard Biener + + * 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 * tree.h (DECL_DEBUG_EXPR_IS_FROM): Rename to ... diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c index 6e6b2c5525d..c3771e54fd0 100644 --- a/gcc/tree-cfg.c +++ b/gcc/tree-cfg.c @@ -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; } diff --git a/gcc/tree-ssa-live.c b/gcc/tree-ssa-live.c index 713458f8e98..7c763eacecb 100644 --- a/gcc/tree-ssa-live.c +++ b/gcc/tree-ssa-live.c @@ -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))