(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:
parent
a0466a6824
commit
f537a5c50f
@ -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))
|
||||
|
Loading…
Reference in New Issue
Block a user