aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Guenther <rguenther@suse.de>2012-04-20 10:17:46 +0000
committerRichard Biener <rguenth@gcc.gnu.org>2012-04-20 10:17:46 +0000
commit4cbc836ed7d6a17696e1bebfeca37582b199ce41 (patch)
tree092f1ecbcb4b5054b625106893dd5f673a1094ef /gcc
parentefb496b5dcb68ac5885e6f20ea3c00b002ee5831 (diff)
downloadgcc-4cbc836ed7d6a17696e1bebfeca37582b199ce41.zip
gcc-4cbc836ed7d6a17696e1bebfeca37582b199ce41.tar.gz
gcc-4cbc836ed7d6a17696e1bebfeca37582b199ce41.tar.bz2
re PR c++/53050 (ssa_forward_propagate_and_combine: segmentation fault)
2012-04-20 Richard Guenther <rguenther@suse.de> PR tree-optimization/53050 * tree-ssa-forwprop.c (ssa_forward_propagate_and_combine): Do only one transform on COND_EXPRs at the same time. From-SVN: r186620
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/tree-ssa-forwprop.c9
2 files changed, 12 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 4c8825d..f1d9799a 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2012-04-20 Richard Guenther <rguenther@suse.de>
+
+ PR tree-optimization/53050
+ * tree-ssa-forwprop.c (ssa_forward_propagate_and_combine):
+ Do only one transform on COND_EXPRs at the same time.
+
2012-04-19 Jan Hubicka <jh@suse.cz>
* symtab.c (dump_symtab_base): Revert accidental checkin.
diff --git a/gcc/tree-ssa-forwprop.c b/gcc/tree-ssa-forwprop.c
index 3e2371b..965f441 100644
--- a/gcc/tree-ssa-forwprop.c
+++ b/gcc/tree-ssa-forwprop.c
@@ -2536,9 +2536,12 @@ ssa_forward_propagate_and_combine (void)
|| code == VEC_COND_EXPR)
{
/* In this case the entire COND_EXPR is in rhs1. */
- changed |= forward_propagate_into_cond (&gsi);
- changed |= combine_cond_exprs (&gsi);
- stmt = gsi_stmt (gsi);
+ if (forward_propagate_into_cond (&gsi)
+ || combine_cond_exprs (&gsi))
+ {
+ changed = true;
+ stmt = gsi_stmt (gsi);
+ }
}
else if (TREE_CODE_CLASS (code) == tcc_comparison)
{