From: Richard Guenther Date: Thu, 2 Jul 2009 12:15:27 +0000 (+0000) Subject: re PR tree-optimization/40585 (tracer duplicates blocks w/o adjusting EH tree) X-Git-Tag: releases/gcc-4.3.4~95 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5c7ef9acfc348a1a355d8f735fb07496128cbb66;p=thirdparty%2Fgcc.git re PR tree-optimization/40585 (tracer duplicates blocks w/o adjusting EH tree) 2009-07-02 Richard Guenther PR middle-end/40585 * tree-cfg.c (tree_can_duplicate_bb_p): Disallow duplicating basic blocks with RESX_EXPR. From-SVN: r149172 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 065439d9c35a..6a11ef4ecc17 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2009-07-02 Richard Guenther + + PR middle-end/40585 + * tree-cfg.c (gimple_can_duplicate_bb_p): Disallow duplicating + basic blocks with GIMPLE_RESX. + 2009-07-01 Ben Elliston Backport from mainline: diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c index 2924b777bccf..25a6216ba86f 100644 --- a/gcc/tree-cfg.c +++ b/gcc/tree-cfg.c @@ -5048,8 +5048,12 @@ tree_move_block_after (basic_block bb, basic_block after) /* Return true if basic_block can be duplicated. */ static bool -tree_can_duplicate_bb_p (const_basic_block bb ATTRIBUTE_UNUSED) +tree_can_duplicate_bb_p (const_basic_block bb) { + tree_stmt_iterator tsi = tsi_last (bb_stmt_list (bb)); + /* We cannot duplicate RESX_EXPRs due to expander limitations. */ + if (!tsi_end_p (tsi) && TREE_CODE (tsi_stmt (tsi)) == RESX_EXPR) + return false; return true; }