From 0ff7313ea9bef35758f073f947b3359632aa051e Mon Sep 17 00:00:00 2001 From: mmitchel Date: Fri, 25 May 2001 06:32:35 +0000 Subject: [PATCH] * c-typeck.c (digest_init): Issue error messages about invalid constants, not warnings. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-3_0-branch@42559 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 3 +++ gcc/c-typeck.c | 15 +++++++++++---- gcc/testsuite/gcc.dg/noncompile/20010524-1.c | 2 ++ 3 files changed, 16 insertions(+), 4 deletions(-) create mode 100644 gcc/testsuite/gcc.dg/noncompile/20010524-1.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index e1862e5943d..9e3fe1ef7f7 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,8 @@ 2001-05-24 Mark Mitchell + * c-typeck.c (digest_init): Issue error messages about + invalid constants, not warnings. + * invoke.texi (-fno-builtin): Document that this is always on in C++. diff --git a/gcc/c-typeck.c b/gcc/c-typeck.c index f05422ca6d2..6a6a7e6e47d 100644 --- a/gcc/c-typeck.c +++ b/gcc/c-typeck.c @@ -4777,14 +4777,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.11.4.GIT