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
This commit is contained in:
parent
a16ad77946
commit
eb8543b353
@ -1,3 +1,8 @@
|
||||
2001-05-24 Mark Mitchell <mark@codesourcery.com>
|
||||
|
||||
* c-typeck.c (digest_init): Issue error messages about
|
||||
invalid constants, not warnings.
|
||||
|
||||
2001-05-24 Mark Mitchell <mark@codesourcery.com>
|
||||
|
||||
* invoke.texi (-fno-builtin): Document that this is always on
|
||||
|
@ -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;
|
||||
}
|
||||
|
2
gcc/testsuite/gcc.dg/noncompile/20010524-1.c
Normal file
2
gcc/testsuite/gcc.dg/noncompile/20010524-1.c
Normal file
@ -0,0 +1,2 @@
|
||||
int i = 7 / 0; /* { dg-error "not constant" } */
|
||||
|
Loading…
Reference in New Issue
Block a user