From 9532a31550d8cb3590ba4b6e1387831efb39face Mon Sep 17 00:00:00 2001 From: rguenth Date: Mon, 18 Mar 2013 10:29:43 +0000 Subject: [PATCH] 2013-03-18 Richard Biener PR middle-end/56483 * cfgexpand.c (expand_gimple_cond): Inline gimple_cond_single_var_p and implement properly. * gimple.h (gimple_cond_single_var_p): Remove. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@196776 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 7 +++++++ gcc/cfgexpand.c | 9 +++++++-- gcc/gimple.h | 17 ----------------- 3 files changed, 14 insertions(+), 19 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 4d9203f06a4..796eab74b41 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,12 @@ 2013-03-18 Richard Biener + PR middle-end/56483 + * cfgexpand.c (expand_gimple_cond): Inline gimple_cond_single_var_p + and implement properly. + * gimple.h (gimple_cond_single_var_p): Remove. + +2013-03-18 Richard Biener + * tree-data-ref.h (find_data_references_in_loop): Declare. * tree-data-ref.c (get_references_in_stmt): Use a stack vector pre-allocated in the callers. diff --git a/gcc/cfgexpand.c b/gcc/cfgexpand.c index 5acc42d73f5..7242b2107f4 100644 --- a/gcc/cfgexpand.c +++ b/gcc/cfgexpand.c @@ -1886,9 +1886,14 @@ expand_gimple_cond (basic_block bb, gimple stmt) be cleaned up by combine. But some pattern matchers like if-conversion work better when there's only one compare, so make up for this here as special exception if TER would have made the same change. */ - if (gimple_cond_single_var_p (stmt) - && SA.values + if (SA.values && TREE_CODE (op0) == SSA_NAME + && TREE_CODE (TREE_TYPE (op0)) == BOOLEAN_TYPE + && TREE_CODE (op1) == INTEGER_CST + && ((gimple_cond_code (stmt) == NE_EXPR + && integer_zerop (op1)) + || (gimple_cond_code (stmt) == EQ_EXPR + && integer_onep (op1))) && bitmap_bit_p (SA.values, SSA_NAME_VERSION (op0))) { gimple second = SSA_NAME_DEF_STMT (op0); diff --git a/gcc/gimple.h b/gcc/gimple.h index 1bbd7d76a11..475d2ea9ee7 100644 --- a/gcc/gimple.h +++ b/gcc/gimple.h @@ -2750,23 +2750,6 @@ gimple_cond_false_p (const_gimple gs) return false; } -/* Check if conditional statement GS is of the form 'if (var != 0)' or - 'if (var == 1)' */ - -static inline bool -gimple_cond_single_var_p (gimple gs) -{ - if (gimple_cond_code (gs) == NE_EXPR - && gimple_cond_rhs (gs) == boolean_false_node) - return true; - - if (gimple_cond_code (gs) == EQ_EXPR - && gimple_cond_rhs (gs) == boolean_true_node) - return true; - - return false; -} - /* Set the code, LHS and RHS of GIMPLE_COND STMT from CODE, LHS and RHS. */ static inline void -- 2.11.4.GIT