From eb8543b35307e95a8f74645cea36a9153869fdda Mon Sep 17 00:00:00 2001 From: Mark Mitchell Date: Fri, 25 May 2001 06:34:16 +0000 Subject: [PATCH] c-typeck.c (digest_init): Issue error messages about invalid constants, not warnings. * c-typeck.c (digest_init): Issue error messages about invalid constants, not warnings. From-SVN: r42560 --- gcc/ChangeLog | 5 +++++ gcc/c-typeck.c | 15 +++++++++++---- gcc/testsuite/gcc.dg/noncompile/20010524-1.c | 2 ++ 3 files changed, 18 insertions(+), 4 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/noncompile/20010524-1.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index f464a4a05f4..c2c6e2992e5 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2001-05-24 Mark Mitchell + + * c-typeck.c (digest_init): Issue error messages about + invalid constants, not warnings. + 2001-05-24 Mark Mitchell * invoke.texi (-fno-builtin): Document that this is always on diff --git a/gcc/c-typeck.c b/gcc/c-typeck.c index 3cbf6c6f3ef..71dae28e909 100644 --- a/gcc/c-typeck.c +++ b/gcc/c-typeck.c @@ -4791,14 +4791,21 @@ digest_init (type, init, require_constant, constructor_constant) if (flag_pedantic_errors) inside_init = error_mark_node; } - else if (require_constant && ! TREE_CONSTANT (inside_init)) + else if (require_constant + && (!TREE_CONSTANT (inside_init) + /* This test catches things like `7 / 0' which + result in an expression for which TREE_CONSTANT + is true, but which is not actually something + that is a legal constant. We really should not + be using this function, because it is a part of + the back-end. Instead, the expression should + already have been turned into ERROR_MARK_NODE. */ + || !initializer_constant_valid_p (inside_init, + TREE_TYPE (inside_init)))) { error_init ("initializer element is not constant"); inside_init = error_mark_node; } - else if (require_constant - && initializer_constant_valid_p (inside_init, TREE_TYPE (inside_init)) == 0) - pedwarn ("initializer element is not computable at load time"); return inside_init; } diff --git a/gcc/testsuite/gcc.dg/noncompile/20010524-1.c b/gcc/testsuite/gcc.dg/noncompile/20010524-1.c new file mode 100644 index 00000000000..754a38c147f --- /dev/null +++ b/gcc/testsuite/gcc.dg/noncompile/20010524-1.c @@ -0,0 +1,2 @@ +int i = 7 / 0; /* { dg-error "not constant" } */ + -- 2.30.2