diff options
author | Xinliang David Li <davidxl@google.com> | 2013-03-02 18:42:26 +0000 |
---|---|---|
committer | Xinliang David Li <davidxl@gcc.gnu.org> | 2013-03-02 18:42:26 +0000 |
commit | 4dc1d68cf2c8bff8d984c26413d81c0041d6e9e8 (patch) | |
tree | 3cba7a065bd86c94ed2986ecdbffb19b6794ffef /gcc/tree-ssa-uninit.c | |
parent | 2609a39863cad3d83ec3fbc6f35164a194c3a18d (diff) | |
download | gcc-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.c | 5 |
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 (); |