From 18c57f2c94753c87e076ae494f41c5105e939c9e Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Tue, 20 Sep 2005 17:29:42 +0200 Subject: [PATCH] re PR tree-optimization/23818 (ICE in dominated_by_p, at dominance.c:827) PR tree-optimization/23818 * tree-stdarg.c (execute_optimize_stdarg): Call calculate_dominance_info. * gcc.dg/pr23818.c: New test. From-SVN: r104455 --- gcc/ChangeLog | 6 ++++++ gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.dg/pr23818.c | 33 +++++++++++++++++++++++++++++++++ gcc/tree-stdarg.c | 2 ++ 4 files changed, 46 insertions(+) create mode 100644 gcc/testsuite/gcc.dg/pr23818.c 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 + + PR tree-optimization/23818 + * tree-stdarg.c (execute_optimize_stdarg): Call + calculate_dominance_info. + 2005-09-18 Daniel Berlin * 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 + + PR tree-optimization/23818 + * gcc.dg/pr23818.c: New test. + 2005-09-20 Tobias Schl"uter 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 + +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; -- 2.30.2