mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-21 23:30:59 +08:00
Fix tree-checking abort on testcase with undefined macro as array size.
* c-decl.c (start_decl): Check for error_mark_node type before using COMPLETE_TYPE_P. (finish_decl): Likewise. Don't give an error if decl type is already error_mark_node. From-SVN: r36955
This commit is contained in:
parent
ef3751295c
commit
f4fce7eda4
@ -1,5 +1,10 @@
|
||||
2000-10-19 Jim Wilson <wilson@cygnus.com>
|
||||
|
||||
* c-decl.c (start_decl): Check for error_mark_node type before using
|
||||
COMPLETE_TYPE_P.
|
||||
(finish_decl): Likewise. Don't give an error if decl type is
|
||||
already error_mark_node.
|
||||
|
||||
* haifa-sched.c (compute_trg_info): Add explanatory comments.
|
||||
New local update_blocks. Use update_blocks to remove duplicates
|
||||
when computing update blocks. Check for bblst_table overflow.
|
||||
|
15
gcc/c-decl.c
15
gcc/c-decl.c
@ -3506,7 +3506,12 @@ start_decl (declarator, declspecs, initialized, attributes, prefix_attributes)
|
||||
default:
|
||||
/* Don't allow initializations for incomplete types
|
||||
except for arrays which might be completed by the initialization. */
|
||||
if (COMPLETE_TYPE_P (TREE_TYPE (decl)))
|
||||
|
||||
/* This can happen if the array size is an undefined macro. We already
|
||||
gave a warning, so we don't need another one. */
|
||||
if (TREE_TYPE (decl) == error_mark_node)
|
||||
initialized = 0;
|
||||
else if (COMPLETE_TYPE_P (TREE_TYPE (decl)))
|
||||
{
|
||||
/* A complete type is ok if size is fixed. */
|
||||
|
||||
@ -3584,7 +3589,8 @@ start_decl (declarator, declspecs, initialized, attributes, prefix_attributes)
|
||||
&& DECL_RTL (tem) == 0
|
||||
&& !DECL_CONTEXT (tem))
|
||||
{
|
||||
if (COMPLETE_TYPE_P (TREE_TYPE (tem)))
|
||||
if (TREE_TYPE (tem) != error_mark_node
|
||||
&& COMPLETE_TYPE_P (TREE_TYPE (tem)))
|
||||
expand_decl (tem);
|
||||
else if (TREE_CODE (TREE_TYPE (tem)) == ARRAY_TYPE
|
||||
&& DECL_INITIAL (tem) != 0)
|
||||
@ -3679,10 +3685,13 @@ finish_decl (decl, init, asmspec_tree)
|
||||
|
||||
if (TREE_CODE (decl) == VAR_DECL)
|
||||
{
|
||||
if (DECL_SIZE (decl) == 0 && COMPLETE_TYPE_P (TREE_TYPE (decl)))
|
||||
if (DECL_SIZE (decl) == 0 && TREE_TYPE (decl) != error_mark_node
|
||||
&& COMPLETE_TYPE_P (TREE_TYPE (decl)))
|
||||
layout_decl (decl, 0);
|
||||
|
||||
if (DECL_SIZE (decl) == 0
|
||||
/* Don't give an error if we already gave one earlier. */
|
||||
&& TREE_TYPE (decl) != error_mark_node
|
||||
&& (TREE_STATIC (decl)
|
||||
?
|
||||
/* A static variable with an incomplete type
|
||||
|
Loading…
x
Reference in New Issue
Block a user