diff options
author | Richard Henderson <rth@redhat.com> | 2009-12-06 15:59:52 -0800 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2009-12-06 15:59:52 -0800 |
commit | 6edde5450540dd4eb265631370cc63f1cc56492d (patch) | |
tree | 5f40c8e021feb3e4a02b64b03edcf7ed051a1c76 | |
parent | a15b72fa7f318ab4e2bbdaddc0735b1f2185ddd0 (diff) | |
download | gcc-6edde5450540dd4eb265631370cc63f1cc56492d.zip gcc-6edde5450540dd4eb265631370cc63f1cc56492d.tar.gz gcc-6edde5450540dd4eb265631370cc63f1cc56492d.tar.bz2 |
re PR debug/42234 (internal compiler error: verify_ssa failed)
PR debug/42234
* tree-ssa-dom.c (degenerate_phi_result): Check for NULL phi
argument earlier.
From-SVN: r155025
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/gcc.c-torture/compile/pr42234.c | 14 | ||||
-rw-r--r-- | gcc/tree-ssa-dom.c | 4 |
3 files changed, 23 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f172477..d18f9f1 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2009-12-06 Richard Henderson <rth@redhat.com> + + PR debug/42234 + * tree-ssa-dom.c (degenerate_phi_result): Check for NULL phi + argument earlier. + 2009-12-06 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> * doc/install.texi: Document MPC is required. diff --git a/gcc/testsuite/gcc.c-torture/compile/pr42234.c b/gcc/testsuite/gcc.c-torture/compile/pr42234.c new file mode 100644 index 0000000..81bec9d --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/pr42234.c @@ -0,0 +1,14 @@ +/* { dg-options "-g" } */ + +void +foo (int x) +{ + struct S { int s; } d = { 1 }; + unsigned int e = 1; + if (x) + e = x && d.s; + else + for (e = 0; e <= 3; e--) + ; + e++; +} diff --git a/gcc/tree-ssa-dom.c b/gcc/tree-ssa-dom.c index dd9fd56..48f423b 100644 --- a/gcc/tree-ssa-dom.c +++ b/gcc/tree-ssa-dom.c @@ -2396,6 +2396,8 @@ degenerate_phi_result (gimple phi) if (arg == lhs) continue; + else if (!arg) + break; else if (!val) val = arg; else if (arg == val) @@ -2403,7 +2405,7 @@ degenerate_phi_result (gimple phi) /* We bring in some of operand_equal_p not only to speed things up, but also to avoid crashing when dereferencing the type of a released SSA name. */ - else if (!arg || TREE_CODE (val) != TREE_CODE (arg) + else if (TREE_CODE (val) != TREE_CODE (arg) || TREE_CODE (val) == SSA_NAME || !operand_equal_p (arg, val, 0)) break; |