Commit c138f328 by Richard Stallman

*** empty log message ***

From-SVN: r423
parent 5c23c401
...@@ -1073,13 +1073,13 @@ pushtag (name, type) ...@@ -1073,13 +1073,13 @@ pushtag (name, type)
if (TYPE_NAME (type) == 0) if (TYPE_NAME (type) == 0)
TYPE_NAME (type) = name; TYPE_NAME (type) = name;
if (b == global_binding_level)
b->tags = perm_tree_cons (name, type, b->tags);
else
b->tags = saveable_tree_cons (name, type, b->tags);
} }
if (b == global_binding_level)
b->tags = perm_tree_cons (name, type, b->tags);
else
b->tags = saveable_tree_cons (name, type, b->tags);
/* Create a fake NULL-named TYPE_DECL node whose TREE_TYPE will be the /* Create a fake NULL-named TYPE_DECL node whose TREE_TYPE will be the
tagged type we just added to the current binding level. This fake tagged type we just added to the current binding level. This fake
NULL-named TYPE_DECL node helps dwarfout.c to know when it needs NULL-named TYPE_DECL node helps dwarfout.c to know when it needs
...@@ -4229,11 +4229,18 @@ parmlist_tags_warning () ...@@ -4229,11 +4229,18 @@ parmlist_tags_warning ()
for (elt = current_binding_level->tags; elt; elt = TREE_CHAIN (elt)) for (elt = current_binding_level->tags; elt; elt = TREE_CHAIN (elt))
{ {
enum tree_code code = TREE_CODE (TREE_VALUE (elt)); enum tree_code code = TREE_CODE (TREE_VALUE (elt));
warning ("`%s %s' declared inside parameter list", if (TREE_PURPOSE (elt) != 0)
(code == RECORD_TYPE ? "struct" warning ("`%s %s' declared inside parameter list",
: code == UNION_TYPE ? "union" (code == RECORD_TYPE ? "struct"
: "enum"), : code == UNION_TYPE ? "union"
IDENTIFIER_POINTER (TREE_PURPOSE (elt))); : "enum"),
IDENTIFIER_POINTER (TREE_PURPOSE (elt)));
else
warning ("anonymous %s declared inside parameter list",
(code == RECORD_TYPE ? "struct"
: code == UNION_TYPE ? "union"
: "enum"));
if (! already) if (! already)
{ {
warning ("its scope is only this definition or declaration,"); warning ("its scope is only this definition or declaration,");
...@@ -5310,6 +5317,19 @@ store_parm_decls () ...@@ -5310,6 +5317,19 @@ store_parm_decls ()
else else
actual = type; actual = type;
/* We are going to assign a new value for the TYPE_ACTUAL_ARG_TYPES
of the type of this function, but we need to avoid having this
affect the types of other similarly-typed functions, so we must
first force the generation of an identical (but separate) type
node for the relevant function type. The new node we create
will be a variant of the main variant of the original function
type. */
TREE_TYPE (fndecl)
= build_type_copy (TYPE_MAIN_VARIANT (TREE_TYPE (fndecl)),
TYPE_READONLY (TREE_TYPE (fndecl)),
TYPE_VOLATILE (TREE_TYPE (fndecl)));
TYPE_ACTUAL_ARG_TYPES (TREE_TYPE (fndecl)) = actual; TYPE_ACTUAL_ARG_TYPES (TREE_TYPE (fndecl)) = actual;
} }
......
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