From: Andrew Pinski Date: Mon, 31 Mar 2008 09:45:53 +0000 (-0700) Subject: re PR tree-optimization/35431 (ICE with complex integer, invalid gimple) X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=550386ada786f5c08050abb8fda4556ea5563ebf;p=gcc.git re PR tree-optimization/35431 (ICE with complex integer, invalid gimple) 2008-03-31 Andrew Pinski PR tree-opt/35431 * tree-ssa-phiopt.c (conditional_replacement): Return early for complex types. 2008-03-31 Andrew Pinski PR tree-opt/35431 * gcc.c-torture/compile/pr35431.c: New testcase. From-SVN: r133749 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 65681743217..f7be8f1f2ae 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2008-03-31 Andrew Pinski + + PR tree-opt/35431 + * tree-ssa-phiopt.c (conditional_replacement): Return early for + complex types. + 2008-03-31 Jan Beulich * config/ia64/constraints.md: Add 'j' constraint. diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index f81763a5129..06b43d93dae 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2008-03-31 Andrew Pinski + + PR tree-opt/35431 + * gcc.c-torture/compile/pr35431.c: New testcase. + 2008-03-30 Kaz Kojima * g++.dg/other/error27.C: Use -fno-finite-math-only on sh* diff --git a/gcc/testsuite/gcc.c-torture/compile/pr35431.c b/gcc/testsuite/gcc.c-torture/compile/pr35431.c new file mode 100644 index 00000000000..ffe9d068a15 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/pr35431.c @@ -0,0 +1,15 @@ +void bar(); + +void foo(int i) +{ + __complex__ int k = 0; + + if (i) + k = 1; + + for (i = 0; i < 1; ++i) + ; + + if (k) + bar(); +} diff --git a/gcc/tree-ssa-phiopt.c b/gcc/tree-ssa-phiopt.c index bfe4fed4ba6..2a8c87827f7 100644 --- a/gcc/tree-ssa-phiopt.c +++ b/gcc/tree-ssa-phiopt.c @@ -463,6 +463,11 @@ conditional_replacement (basic_block cond_bb, basic_block middle_bb, tree new_var = NULL; tree new_var1; + /* FIXME: Gimplification of complex type is too hard for now. */ + if (TREE_CODE (TREE_TYPE (arg0)) == COMPLEX_TYPE + || TREE_CODE (TREE_TYPE (arg1)) == COMPLEX_TYPE) + return false; + /* The PHI arguments have the constants 0 and 1, then convert it to the conditional. */ if ((integer_zerop (arg0) && integer_onep (arg1))