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:
Mark Mitchell 2001-05-25 06:34:16 +00:00 committed by Mark Mitchell
parent a16ad77946
commit eb8543b353
3 changed files with 18 additions and 4 deletions

View File

@ -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

View File

@ -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;
}

View File

@ -0,0 +1,2 @@
int i = 7 / 0; /* { dg-error "not constant" } */