aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Pinski <pinskia@physics.uc.edu>2004-11-30 15:38:43 +0000
committerAndrew Pinski <pinskia@gcc.gnu.org>2004-11-30 07:38:43 -0800
commit209e170cf47f93c83786522b00ddba70b9df1a2d (patch)
tree8f63b0c093a96e65ae0a8f48af5102ab369bd089
parent00bda9206b27e0c9d5bae355189fe2067ed12750 (diff)
downloadgcc-209e170cf47f93c83786522b00ddba70b9df1a2d.zip
gcc-209e170cf47f93c83786522b00ddba70b9df1a2d.tar.gz
gcc-209e170cf47f93c83786522b00ddba70b9df1a2d.tar.bz2
re PR tree-optimization/18298 (bad code from lim ssa pass with strcmp)
2004-11-30 Andrew Pinski <pinskia@physics.uc.edu> PR tree-opt/18298 * tree-optimize.c (init_tree_optimization_passes): Add a may_alias pass right after fold builtins. 2004-11-30 Andrew Pinski <pinskia@physics.uc.edu> PR tree-opt/18298 * gcc.c-torture/execute/p18298.c: New test. From-SVN: r91529
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/p18298.c18
-rw-r--r--gcc/tree-optimize.c4
4 files changed, 33 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index c2e35f7..98e8238 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2004-11-30 Andrew Pinski <pinskia@physics.uc.edu>
+
+ PR tree-opt/18298
+ * tree-optimize.c (init_tree_optimization_passes): Add a may_alias
+ pass right after fold builtins.
+
2004-11-30 Andreas Krebbel <krebbel1@de.ibm.com>
* config/s390/s390-modes.def: Added cc modes documentation.
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index a2bb4ec..8d561ad 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2004-11-30 Andrew Pinski <pinskia@physics.uc.edu>
+
+ PR tree-opt/18298
+ * gcc.c-torture/execute/p18298.c: New test.
+
2004-11-30 Ira Rosen <irar@il.ibm.com>
Dorit Naishlos <dorit@il.ibm.com>
diff --git a/gcc/testsuite/gcc.c-torture/execute/p18298.c b/gcc/testsuite/gcc.c-torture/execute/p18298.c
new file mode 100644
index 0000000..5aff51f
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/execute/p18298.c
@@ -0,0 +1,18 @@
+#include <stdbool.h>
+#include <stdlib.h>
+int strcmp (const char*, const char*);
+char s[2048] = "a";
+inline bool foo(const char *str) {
+ return !strcmp(s,str);
+}
+int main() {
+int i = 0;
+ while(!(foo(""))) {
+ i ++;
+ s[0] = '\0';
+ if (i>2)
+ abort ();
+ }
+ return 0;
+}
+
diff --git a/gcc/tree-optimize.c b/gcc/tree-optimize.c
index d60bf3f..9f58f53 100644
--- a/gcc/tree-optimize.c
+++ b/gcc/tree-optimize.c
@@ -372,6 +372,10 @@ init_tree_optimization_passes (void)
NEXT_PASS (pass_ccp);
NEXT_PASS (pass_redundant_phi);
NEXT_PASS (pass_fold_builtins);
+ /* FIXME: May alias should a TODO but for 4.0.0,
+ we add may_alias right after fold builtins
+ which can create arbitrary GIMPLE. */
+ NEXT_PASS (pass_may_alias);
NEXT_PASS (pass_split_crit_edges);
NEXT_PASS (pass_pre);
NEXT_PASS (pass_loop);