aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMichael Matz <matz@suse.de>2010-11-26 16:51:39 +0000
committerMichael Matz <matz@gcc.gnu.org>2010-11-26 16:51:39 +0000
commitf7882debb8223bd221deed9693c4ea07b7a36808 (patch)
tree4d51b8434dfcafe81793e2040b84ada057bdbbc5 /gcc
parent67701d1ddcc49905765c0a7b6610e9c284f467cd (diff)
downloadgcc-f7882debb8223bd221deed9693c4ea07b7a36808.zip
gcc-f7882debb8223bd221deed9693c4ea07b7a36808.tar.gz
gcc-f7882debb8223bd221deed9693c4ea07b7a36808.tar.bz2
tree-ssa-copy.c (fini_copy_prop): Don't DCE when we have loops.
* tree-ssa-copy.c (fini_copy_prop): Don't DCE when we have loops. * passes.c (init_optimization_passes): Remove superfluous copy-prop pass. From-SVN: r167184
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/passes.c1
-rw-r--r--gcc/tree-ssa-copy.c4
3 files changed, 10 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 810590c..7e996ca 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2010-11-26 Michael Matz <matz@suse.de>
+
+ * tree-ssa-copy.c (fini_copy_prop): Don't DCE when we have loops.
+
+ * passes.c (init_optimization_passes): Remove superfluous
+ copy-prop pass.
+
2010-11-26 Richard Guenther <rguenther@suse.de>
PR lto/46648
diff --git a/gcc/passes.c b/gcc/passes.c
index b5cb2ac..38cc570 100644
--- a/gcc/passes.c
+++ b/gcc/passes.c
@@ -897,7 +897,6 @@ init_optimization_passes (void)
NEXT_PASS (pass_graphite);
{
struct opt_pass **p = &pass_graphite.pass.sub;
- NEXT_PASS (pass_copy_prop);
NEXT_PASS (pass_graphite_transforms);
NEXT_PASS (pass_copy_prop);
NEXT_PASS (pass_dce_loop);
diff --git a/gcc/tree-ssa-copy.c b/gcc/tree-ssa-copy.c
index 6837033..d552c3a 100644
--- a/gcc/tree-ssa-copy.c
+++ b/gcc/tree-ssa-copy.c
@@ -775,7 +775,9 @@ fini_copy_prop (void)
duplicate_ssa_name_ptr_info (copy_of[i].value, SSA_NAME_PTR_INFO (var));
}
- substitute_and_fold (get_value, NULL, true);
+ /* Don't do DCE if we have loops. That's the simplest way to not
+ destroy the scev cache. */
+ substitute_and_fold (get_value, NULL, !current_loops);
free (copy_of);
}