diff options
author | Andrew Pinski <pinskia@physics.uc.edu> | 2004-11-30 15:38:43 +0000 |
---|---|---|
committer | Andrew Pinski <pinskia@gcc.gnu.org> | 2004-11-30 07:38:43 -0800 |
commit | 209e170cf47f93c83786522b00ddba70b9df1a2d (patch) | |
tree | 8f63b0c093a96e65ae0a8f48af5102ab369bd089 | |
parent | 00bda9206b27e0c9d5bae355189fe2067ed12750 (diff) | |
download | gcc-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/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.c-torture/execute/p18298.c | 18 | ||||
-rw-r--r-- | gcc/tree-optimize.c | 4 |
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); |