Mercurial > hg > CbC > CbC_gcc
diff gcc/tree-ssa-ifcombine.c @ 67:f6334be47118
update gcc from gcc-4.6-20100522 to gcc-4.6-20110318
author | nobuyasu <dimolto@cr.ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 22 Mar 2011 17:18:12 +0900 |
parents | b7f97abdc517 |
children | 04ced10e8804 |
line wrap: on
line diff
--- a/gcc/tree-ssa-ifcombine.c Tue May 25 18:58:51 2010 +0900 +++ b/gcc/tree-ssa-ifcombine.c Tue Mar 22 17:18:12 2011 +0900 @@ -25,7 +25,6 @@ #include "tree.h" #include "basic-block.h" #include "timevar.h" -#include "diagnostic.h" #include "tree-pretty-print.h" #include "tree-flow.h" #include "tree-pass.h" @@ -367,21 +366,16 @@ /* See if we have two comparisons that we can merge into one. */ else if (TREE_CODE_CLASS (gimple_cond_code (inner_cond)) == tcc_comparison - && TREE_CODE_CLASS (gimple_cond_code (outer_cond)) == tcc_comparison - && operand_equal_p (gimple_cond_lhs (inner_cond), - gimple_cond_lhs (outer_cond), 0) - && operand_equal_p (gimple_cond_rhs (inner_cond), - gimple_cond_rhs (outer_cond), 0)) + && TREE_CODE_CLASS (gimple_cond_code (outer_cond)) == tcc_comparison) { - enum tree_code code1 = gimple_cond_code (inner_cond); - enum tree_code code2 = gimple_cond_code (outer_cond); tree t; - if (!(t = combine_comparisons (UNKNOWN_LOCATION, - TRUTH_ANDIF_EXPR, code1, code2, - boolean_type_node, - gimple_cond_lhs (outer_cond), - gimple_cond_rhs (outer_cond)))) + if (!(t = maybe_fold_and_comparisons (gimple_cond_code (inner_cond), + gimple_cond_lhs (inner_cond), + gimple_cond_rhs (inner_cond), + gimple_cond_code (outer_cond), + gimple_cond_lhs (outer_cond), + gimple_cond_rhs (outer_cond)))) return false; t = canonicalize_cond_expr_cond (t); if (!t) @@ -519,22 +513,17 @@ /* See if we have two comparisons that we can merge into one. This happens for C++ operator overloading where for example GE_EXPR is implemented as GT_EXPR || EQ_EXPR. */ - else if (TREE_CODE_CLASS (gimple_cond_code (inner_cond)) == tcc_comparison - && TREE_CODE_CLASS (gimple_cond_code (outer_cond)) == tcc_comparison - && operand_equal_p (gimple_cond_lhs (inner_cond), - gimple_cond_lhs (outer_cond), 0) - && operand_equal_p (gimple_cond_rhs (inner_cond), - gimple_cond_rhs (outer_cond), 0)) + else if (TREE_CODE_CLASS (gimple_cond_code (inner_cond)) == tcc_comparison + && TREE_CODE_CLASS (gimple_cond_code (outer_cond)) == tcc_comparison) { - enum tree_code code1 = gimple_cond_code (inner_cond); - enum tree_code code2 = gimple_cond_code (outer_cond); tree t; - if (!(t = combine_comparisons (UNKNOWN_LOCATION, - TRUTH_ORIF_EXPR, code1, code2, - boolean_type_node, - gimple_cond_lhs (outer_cond), - gimple_cond_rhs (outer_cond)))) + if (!(t = maybe_fold_or_comparisons (gimple_cond_code (inner_cond), + gimple_cond_lhs (inner_cond), + gimple_cond_rhs (inner_cond), + gimple_cond_code (outer_cond), + gimple_cond_lhs (outer_cond), + gimple_cond_rhs (outer_cond)))) return false; t = canonicalize_cond_expr_cond (t); if (!t)