diff options
author | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-09-20 15:29:42 +0000 |
---|---|---|
committer | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-09-20 15:29:42 +0000 |
commit | ccc5d6f168be96bc308bd412054f8035917bbbda (patch) | |
tree | ce0cd4a6e434c8e5736fcc05933ee2440ad23479 | |
parent | 31f98b1e6a5da222fbb788015ed85168262a7c48 (diff) | |
download | gcc-ccc5d6f168be96bc308bd412054f8035917bbbda.tar.gz |
PR tree-optimization/23818
* tree-stdarg.c (execute_optimize_stdarg): Call
calculate_dominance_info.
* gcc.dg/pr23818.c: New test.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@104455 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/pr23818.c | 33 | ||||
-rw-r--r-- | gcc/tree-stdarg.c | 2 |
4 files changed, 46 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 5051fd6a57f..3a6a8dd5cc9 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2005-09-20 Jakub Jelinek <jakub@redhat.com> + + PR tree-optimization/23818 + * tree-stdarg.c (execute_optimize_stdarg): Call + calculate_dominance_info. + 2005-09-18 Daniel Berlin <dberlin@dberlin.org> * tree-data-ref.c (get_number_of_iters_for_loop): New function. diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index f91da851686..e4561999bd3 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2005-09-20 Jakub Jelinek <jakub@redhat.com> + + PR tree-optimization/23818 + * gcc.dg/pr23818.c: New test. + 2005-09-20 Tobias Schl"uter <tobias.schlueter@physik.uni-muenchen.de> PR fortran/23420 diff --git a/gcc/testsuite/gcc.dg/pr23818.c b/gcc/testsuite/gcc.dg/pr23818.c new file mode 100644 index 00000000000..be0bb9a0101 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr23818.c @@ -0,0 +1,33 @@ +/* PR tree-optimization/23818 */ +/* { dg-do run } */ +/* { dg-options "-O2 -fno-tree-dominator-opts" } */ + +#include <stdarg.h> + +extern void abort (void); + +void +foo (int p[100], int k, ...) +{ + int j, *q; + va_list ap; + + va_start (ap, k); + q = va_arg (ap, int *); + for (j = 0; j < 100; j++) + q[j] = p[j] + 10; + va_end(ap); +} + +int +main (void) +{ + int buf[100], buf2[100], i; + for (i = 0; i < 100; i++) + buf[i] = i + 1; + foo (buf, 0, buf2); + for (i = 0; i < 100; i++) + if (buf2[i] != buf[i] + 10) + abort (); + return 0; +} diff --git a/gcc/tree-stdarg.c b/gcc/tree-stdarg.c index a7446585b63..c68e7b58c2c 100644 --- a/gcc/tree-stdarg.c +++ b/gcc/tree-stdarg.c @@ -734,6 +734,8 @@ execute_optimize_stdarg (void) if (va_list_simple_ptr) cfun->va_list_fpr_size = VA_LIST_MAX_FPR_SIZE; + calculate_dominance_info (CDI_DOMINATORS); + FOR_EACH_BB (bb) { block_stmt_iterator i; |