diff options
author | Andrew Pinski <pinskia@gmail.com> | 2008-03-31 02:45:53 -0700 |
---|---|---|
committer | Andrew Pinski <pinskia@gcc.gnu.org> | 2008-03-31 02:45:53 -0700 |
commit | 550386ada786f5c08050abb8fda4556ea5563ebf (patch) | |
tree | 4395ec40617170321c63880741b46a2354bd61a1 /gcc | |
parent | 4e483a224bee8280b1233e2831dcd49dfb5c2419 (diff) | |
download | gcc-550386ada786f5c08050abb8fda4556ea5563ebf.zip gcc-550386ada786f5c08050abb8fda4556ea5563ebf.tar.gz gcc-550386ada786f5c08050abb8fda4556ea5563ebf.tar.bz2 |
re PR tree-optimization/35431 (ICE with complex integer, invalid gimple)
2008-03-31 Andrew Pinski <pinskia@gmail.com>
PR tree-opt/35431
* tree-ssa-phiopt.c (conditional_replacement): Return early for
complex types.
2008-03-31 Andrew Pinski <pinskia@gmail.com>
PR tree-opt/35431
* gcc.c-torture/compile/pr35431.c: New testcase.
From-SVN: r133749
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.c-torture/compile/pr35431.c | 15 | ||||
-rw-r--r-- | gcc/tree-ssa-phiopt.c | 5 |
4 files changed, 31 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 6568174..f7be8f1 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2008-03-31 Andrew Pinski <pinskia@gmail.com> + + PR tree-opt/35431 + * tree-ssa-phiopt.c (conditional_replacement): Return early for + complex types. + 2008-03-31 Jan Beulich <jbeulich@novell.com> * config/ia64/constraints.md: Add 'j' constraint. diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index f81763a..06b43d9 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2008-03-31 Andrew Pinski <pinskia@gmail.com> + + PR tree-opt/35431 + * gcc.c-torture/compile/pr35431.c: New testcase. + 2008-03-30 Kaz Kojima <kkojima@gcc.gnu.org> * 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 0000000..ffe9d06 --- /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 bfe4fed..2a8c878 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)) |