diff options
-rw-r--r-- | gcc/testsuite/ChangeLog.tree-ssa | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/tree-ssa/20040313-1.c | 16 |
2 files changed, 21 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog.tree-ssa b/gcc/testsuite/ChangeLog.tree-ssa index 774adfa4b94..c3515108308 100644 --- a/gcc/testsuite/ChangeLog.tree-ssa +++ b/gcc/testsuite/ChangeLog.tree-ssa @@ -1,3 +1,8 @@ +2004-03-13 Diego Novillo <dnovillo@redhat.com> + + PR optimization/14553 + * gcc.dg/tree-ssa/20040313-1.c: New test. + 2004-03-11 Kazu Hirata <kazu@cs.umass.edu> * gcc.dg/tree-ssa/20040305-1.c: Change a constant to fit in a diff --git a/gcc/testsuite/gcc.dg/tree-ssa/20040313-1.c b/gcc/testsuite/gcc.dg/tree-ssa/20040313-1.c new file mode 100644 index 00000000000..0ad144c03dd --- /dev/null +++ b/gcc/testsuite/gcc.dg/tree-ssa/20040313-1.c @@ -0,0 +1,16 @@ +/* { dg-do compile } */ +/* { dg-options "-O3" } */ + +/* Test provided by Volker Reichelt in PR 14553. The redundant PHI + node elimination pass was not using the right API functions to + propagate pointers, which resulted in dereferenced pointers that + did not have memory tags associated with them. */ + +void foo(int* p) +{ + int i; + for (i=1; i>0; --i, ++p) + *p=0; +} + +void bar(int* p) { foo(p); } |