From: jsm28 Date: Fri, 25 Aug 2006 23:01:16 +0000 (+0000) Subject: PR c/27893 X-Git-Tag: upstream/4.9.2~53305 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=00fde2751e6be2558693e205b58f37d18e2e3c53;p=platform%2Fupstream%2Flinaro-gcc.git PR c/27893 * gimplify.c (gimplify_decl_expr, gimplify_init_ctor_preeval, omp_add_variable): Treat sizes as variable whenever not INTEGER_CST. testsuite: * gcc.c-torture/compile/vla-const-1.c, gcc.c-torture/compile/vla-const-2.c: New tests. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@116450 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c18b80e..ec1b234 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2006-08-25 Joseph S. Myers + + PR c/27893 + * gimplify.c (gimplify_decl_expr, gimplify_init_ctor_preeval, + omp_add_variable): Treat sizes as variable whenever not + INTEGER_CST. + 2006-08-26 Richard Guenther PR middle-end/28814 diff --git a/gcc/c-pretty-print.c b/gcc/c-pretty-print.c index 4f1dbbc..5225ea3 100644 --- a/gcc/c-pretty-print.c +++ b/gcc/c-pretty-print.c @@ -528,8 +528,8 @@ pp_c_direct_abstract_declarator (c_pretty_printer *pp, tree t) if (host_integerp (maxval, 0)) pp_wide_integer (pp, tree_low_cst (maxval, 0) + 1); else - pp_expression (pp, fold_build2 (PLUS_EXPR, type, maxval, - build_int_cst (type, 1))); + pp_expression (pp, fold (build2 (PLUS_EXPR, type, maxval, + build_int_cst (type, 1)))); } pp_c_right_bracket (pp); pp_direct_abstract_declarator (pp, TREE_TYPE (t)); diff --git a/gcc/gimplify.c b/gcc/gimplify.c index fd9e1e5..cf48770 100644 --- a/gcc/gimplify.c +++ b/gcc/gimplify.c @@ -1219,7 +1219,7 @@ gimplify_decl_expr (tree *stmt_p) { tree init = DECL_INITIAL (decl); - if (!TREE_CONSTANT (DECL_SIZE (decl))) + if (TREE_CODE (DECL_SIZE (decl)) != INTEGER_CST) { /* This is a variable-sized decl. Simplify its size and mark it for deferred expansion. Note that mudflap depends on the format @@ -2696,7 +2696,7 @@ gimplify_init_ctor_preeval (tree *expr_p, tree *pre_p, tree *post_p, /* If this is of variable size, we have no choice but to assume it doesn't overlap since we can't make a temporary for it. */ - if (!TREE_CONSTANT (TYPE_SIZE (TREE_TYPE (*expr_p)))) + if (TREE_CODE (TYPE_SIZE (TREE_TYPE (*expr_p))) != INTEGER_CST) return; /* Otherwise, we must search for overlap ... */ @@ -4384,7 +4384,7 @@ omp_add_variable (struct gimplify_omp_ctx *ctx, tree decl, unsigned int flags) /* When adding a variable-sized variable, we have to handle all sorts of additional bits of data: the pointer replacement variable, and the parameters of the type. */ - if (DECL_SIZE (decl) && !TREE_CONSTANT (DECL_SIZE (decl))) + if (DECL_SIZE (decl) && TREE_CODE (DECL_SIZE (decl)) != INTEGER_CST) { /* Add the pointer replacement variable as PRIVATE if the variable replacement is private, else FIRSTPRIVATE since we'll need the @@ -4431,7 +4431,7 @@ omp_add_variable (struct gimplify_omp_ctx *ctx, tree decl, unsigned int flags) if ((flags & GOVD_SHARED) == 0) { t = TYPE_SIZE_UNIT (TREE_TYPE (TREE_TYPE (decl))); - if (!TREE_CONSTANT (t)) + if (TREE_CODE (t) != INTEGER_CST) omp_notice_variable (ctx, t, true); } } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 9194e7f..f74ad90 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2006-08-25 Joseph S. Myers + + PR c/27893 + * gcc.c-torture/compile/vla-const-1.c, + gcc.c-torture/compile/vla-const-2.c: New tests. + 2006-08-26 Richard Guenther PR middle-end/28814 diff --git a/gcc/testsuite/gcc.c-torture/compile/vla-const-1.c b/gcc/testsuite/gcc.c-torture/compile/vla-const-1.c new file mode 100644 index 0000000..6acc3d8 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/vla-const-1.c @@ -0,0 +1,5 @@ +/* Test TREE_CONSTANT VLA size: bug 27893. */ +/* Origin: Joseph Myers */ +int a; +void g(void *); +void f(void) { int b[(__SIZE_TYPE__)&a]; g(b); } diff --git a/gcc/testsuite/gcc.c-torture/compile/vla-const-2.c b/gcc/testsuite/gcc.c-torture/compile/vla-const-2.c new file mode 100644 index 0000000..913a730 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/compile/vla-const-2.c @@ -0,0 +1,4 @@ +/* Test TREE_CONSTANT VLA size: bug 27893. */ +/* Origin: Joseph Myers */ +void g(void *); +void f(void) { int b[1/0]; g(b); }