Commit e2ebb05c by Martin Sebor Committed by Martin Sebor

PR middle-end/89294 - ICE in valid_constant_size_p

gcc/c-family/ChangeLog:

	PR middle-end/89294
	* c-common.c (invalid_array_size_error): Handle cst_size_not_constant.

gcc/ChangeLog:

	PR middle-end/89294
	* tree.c (valid_constant_size_p): Avoid assuming size is a constant
	expression.
	* tree.h (cst_size_error): Add the cst_size_not_constant enumerator.

From-SVN: r268990
parent eb8c4926
2019-02-18 Martin Sebor <msebor@redhat.com>
PR middle-end/89294
* tree.c (valid_constant_size_p): Avoid assuming size is a constant
expression.
* tree.h (cst_size_error): Add the cst_size_not_constant enumerator.
2019-02-18 Richard Biener <rguenther@suse.de>
PR tree-optimization/89296
......
2019-02-18 Martin Sebor <msebor@redhat.com>
PR middle-end/89294
* c-common.c (invalid_array_size_error): Handle cst_size_not_constant.
2019-02-16 David Malcolm <dmalcolm@redhat.com>
PR c++/88680
......
......@@ -8248,6 +8248,13 @@ invalid_array_size_error (location_t loc, cst_size_error error,
tree maxsize = max_object_size ();
switch (error)
{
case cst_size_not_constant:
if (name)
error_at (loc, "size of array %qE is not a constant expression",
name);
else
error_at (loc, "size of array is not a constant expression");
break;
case cst_size_negative:
if (name)
error_at (loc, "size %qE of array %qE is negative",
......
......@@ -7521,7 +7521,13 @@ valid_constant_size_p (const_tree size, cst_size_error *perr /* = NULL */)
if (!perr)
perr = &error;
if (TREE_OVERFLOW (size))
if (TREE_CODE (size) != INTEGER_CST)
{
*perr = cst_size_not_constant;
return false;
}
if (TREE_OVERFLOW_P (size))
{
*perr = cst_size_overflow;
return false;
......
......@@ -4352,6 +4352,7 @@ extern tree excess_precision_type (tree);
is not a valid size. */
enum cst_size_error {
cst_size_ok,
cst_size_not_constant,
cst_size_negative,
cst_size_too_big,
cst_size_overflow
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment