From: Xinliang David Li Date: Sat, 2 Mar 2013 18:42:26 +0000 (+0000) Subject: PR/56490 X-Git-Tag: releases/gcc-4.8.0~234 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=4dc1d68cf2c8bff8d984c26413d81c0041d6e9e8;p=thirdparty%2Fgcc.git PR/56490 From-SVN: r196406 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index fa0bb7655d09..32f6e4b6f0fe 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2013-03-01 Xinliang David Li + + * tree-ssa-uninit.c (compute_control_dep_chain): Limit post-dom + walk length. + 2013-03-01 Jakub Jelinek PR middle-end/56461 diff --git a/gcc/tree-ssa-uninit.c b/gcc/tree-ssa-uninit.c index a91ee379d696..e8f3ff7e7302 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 ();