From: Jakub Jelinek Date: Fri, 4 Jul 2014 08:32:56 +0000 (+0200) Subject: re PR tree-optimization/61684 (ICE at -Os and above on x86_64-linux-gnu in tree check... X-Git-Tag: releases/gcc-5.1.0~6498 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=14e000dec0e6eb1a7f3029cd147595e8972c2d23;p=thirdparty%2Fgcc.git re PR tree-optimization/61684 (ICE at -Os and above on x86_64-linux-gnu in tree check: expected ssa_name, have addr_expr in recognize_single_bit_test, at tree-ssa-ifcombine.c:238) PR tree-optimization/61684 * tree-ssa-ifcombine.c (recognize_single_bit_test): Make sure rhs1 of conversion is a SSA_NAME before using SSA_NAME_DEF_STMT on it. * gcc.c-torture/compile/pr61684.c: New test. From-SVN: r212290 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3b0f8ef6bcd2..49652198a57a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2014-07-04 Jakub Jelinek + + PR tree-optimization/61684 + * tree-ssa-ifcombine.c (recognize_single_bit_test): Make sure + rhs1 of conversion is a SSA_NAME before using SSA_NAME_DEF_STMT on it. + 2014-07-04 Chung-Ju Wu Kito Cheng Monk Chiang diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 9ea562b78a5d..5eee71793193 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2014-07-04 Jakub Jelinek + + PR tree-optimization/61684 + * gcc.c-torture/compile/pr61684.c: New test. + 2014-07-04 Thomas Schwinge * lib/g++-dg.exp (g++-dg-runtest): Change interface to match diff --git a/gcc/testsuite/gcc.c-torture/compile/pr61684.c b/gcc/testsuite/gcc.c-torture/compile/pr61684.c new file mode 100644 index 000000000000..f5b53b73a0d3 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/pr61684.c @@ -0,0 +1,15 @@ +/* PR tree-optimization/61684 */ + +int a, c; +static int *b = 0; +short d; +static short **e = 0; + +void +foo () +{ + for (; c < 1; c++) + ; + *e = &d; + a = d && (c && 1) & *b; +} diff --git a/gcc/tree-ssa-ifcombine.c b/gcc/tree-ssa-ifcombine.c index fa3c5b1cf5e2..7e051a30b08f 100644 --- a/gcc/tree-ssa-ifcombine.c +++ b/gcc/tree-ssa-ifcombine.c @@ -233,7 +233,8 @@ recognize_single_bit_test (gimple cond, tree *name, tree *bit, bool inv) while (is_gimple_assign (stmt) && ((CONVERT_EXPR_CODE_P (gimple_assign_rhs_code (stmt)) && (TYPE_PRECISION (TREE_TYPE (gimple_assign_lhs (stmt))) - <= TYPE_PRECISION (TREE_TYPE (gimple_assign_rhs1 (stmt))))) + <= TYPE_PRECISION (TREE_TYPE (gimple_assign_rhs1 (stmt)))) + && TREE_CODE (gimple_assign_rhs1 (stmt)) == SSA_NAME) || gimple_assign_ssa_name_copy_p (stmt))) stmt = SSA_NAME_DEF_STMT (gimple_assign_rhs1 (stmt));