diff options
-rw-r--r-- | gcc/c-decl.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/gcc/c-decl.c b/gcc/c-decl.c index 4d9424f..df0a515 100644 --- a/gcc/c-decl.c +++ b/gcc/c-decl.c @@ -4481,8 +4481,10 @@ grokdeclarator (declarator, declspecs, decl_context, initialized) if (TREE_CODE (type) == ARRAY_TYPE) { /* Transfer const-ness of array into that of type pointed to. */ - type = build_pointer_type - (c_build_type_variant (TREE_TYPE (type), constp, volatilep)); + type = TREE_TYPE (type); + if (constp || volatilep) + type = c_build_type_variant (type, constp, volatilep); + type = build_pointer_type (type); volatilep = constp = 0; size_varies = 0; } @@ -4490,7 +4492,9 @@ grokdeclarator (declarator, declspecs, decl_context, initialized) { if (pedantic && (constp || volatilep)) pedwarn ("ANSI C forbids const or volatile function types"); - type = build_pointer_type (c_build_type_variant (type, constp, volatilep)); + if (constp || volatilep) + type = c_build_type_variant (type, constp, volatilep); + type = build_pointer_type (type); volatilep = constp = 0; } |