aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-uninit.c
diff options
context:
space:
mode:
authorXinliang David Li <davidxl@google.com>2013-03-02 18:42:26 +0000
committerXinliang David Li <davidxl@gcc.gnu.org>2013-03-02 18:42:26 +0000
commit4dc1d68cf2c8bff8d984c26413d81c0041d6e9e8 (patch)
tree3cba7a065bd86c94ed2986ecdbffb19b6794ffef /gcc/tree-ssa-uninit.c
parent2609a39863cad3d83ec3fbc6f35164a194c3a18d (diff)
downloadgcc-4dc1d68cf2c8bff8d984c26413d81c0041d6e9e8.zip
gcc-4dc1d68cf2c8bff8d984c26413d81c0041d6e9e8.tar.gz
gcc-4dc1d68cf2c8bff8d984c26413d81c0041d6e9e8.tar.bz2
PR/56490
From-SVN: r196406
Diffstat (limited to 'gcc/tree-ssa-uninit.c')
-rw-r--r--gcc/tree-ssa-uninit.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/gcc/tree-ssa-uninit.c b/gcc/tree-ssa-uninit.c
index a91ee37..e8f3ff7 100644
--- a/gcc/tree-ssa-uninit.c
+++ b/gcc/tree-ssa-uninit.c
@@ -229,6 +229,7 @@ find_control_equiv_block (basic_block bb)
#define MAX_NUM_CHAINS 8
#define MAX_CHAIN_LEN 5
+#define MAX_POSTDOM_CHECK 8
/* Computes the control dependence chains (paths of edges)
for DEP_BB up to the dominating basic block BB (the head node of a
@@ -269,6 +270,7 @@ compute_control_dep_chain (basic_block bb, basic_block dep_bb,
FOR_EACH_EDGE (e, ei, bb->succs)
{
basic_block cd_bb;
+ int post_dom_check = 0;
if (e->flags & (EDGE_FAKE | EDGE_ABNORMAL))
continue;
@@ -298,7 +300,8 @@ compute_control_dep_chain (basic_block bb, basic_block dep_bb,
}
cd_bb = find_pdom (cd_bb);
- if (cd_bb == EXIT_BLOCK_PTR)
+ post_dom_check++;
+ if (cd_bb == EXIT_BLOCK_PTR || post_dom_check > MAX_POSTDOM_CHECK)
break;
}
cur_cd_chain->pop ();