diff options
Diffstat (limited to 'gcc')
-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); |