(grokdeclarator): Avoid the use of macros for ..._TYPE

nodes in cases where a parameter's type is error_mark_node.

From-SVN: r4708
This commit is contained in:
Richard Stallman 1993-06-22 06:07:19 +00:00
parent a0466a6824
commit f537a5c50f
1 changed files with 5 additions and 2 deletions

View File

@ -4457,13 +4457,16 @@ grokdeclarator (declarator, declspecs, decl_context, initialized)
When there is a prototype, this is overridden later. */
DECL_ARG_TYPE (decl) = type;
main_type = TYPE_MAIN_VARIANT (type);
main_type = (type == error_mark_node
? error_mark_node
: TYPE_MAIN_VARIANT (type));
if (main_type == float_type_node)
DECL_ARG_TYPE (decl) = double_type_node;
/* Don't use TYPE_PRECISION to decide whether to promote,
because we should convert short if it's the same size as int,
but we should not convert long if it's the same size as int. */
else if (C_PROMOTING_INTEGER_TYPE_P (main_type))
else if (TREE_CODE (main_type) != ERROR_MARK
&& C_PROMOTING_INTEGER_TYPE_P (main_type))
{
if (TYPE_PRECISION (type) == TYPE_PRECISION (integer_type_node)
&& TREE_UNSIGNED (type))