mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-06 02:20:34 +08:00
(split_specs_attrs): Delete.
From-SVN: r12958
This commit is contained in:
parent
239c95d346
commit
5e918f1d5d
@ -12619,73 +12619,6 @@ in_function_p ()
|
||||
}
|
||||
|
||||
/* FSF LOCAL dje prefix attributes */
|
||||
/* Split SPECS_ATTRS, a list of declspecs and prefix attributes, into two
|
||||
lists. SPECS_ATTRS may also be just a typespec (eg: RECORD_TYPE).
|
||||
|
||||
The head of the declspec list is stored in DECLSPECS.
|
||||
The head of the attribute list is stored in PREFIX_ATTRIBUTES.
|
||||
|
||||
Note that attributes in SPECS_ATTRS are stored in the TREE_PURPOSE of
|
||||
the list elements. We drop the containing TREE_LIST nodes and link the
|
||||
resulting attributes together the way decl_attributes expects them. */
|
||||
|
||||
void
|
||||
split_specs_attrs (specs_attrs, declspecs, prefix_attributes)
|
||||
tree specs_attrs;
|
||||
tree *declspecs, *prefix_attributes;
|
||||
{
|
||||
tree t, s, a, next, specs, attrs;
|
||||
|
||||
/* This can happen in c++ (eg: decl: typespec initdecls ';'). */
|
||||
if (specs_attrs != NULL_TREE
|
||||
&& TREE_CODE (specs_attrs) != TREE_LIST)
|
||||
{
|
||||
*declspecs = specs_attrs;
|
||||
*prefix_attributes = NULL_TREE;
|
||||
return;
|
||||
}
|
||||
|
||||
/* Remember to keep the lists in the same order, element-wise. */
|
||||
|
||||
specs = s = NULL_TREE;
|
||||
attrs = a = NULL_TREE;
|
||||
for (t = specs_attrs; t; t = next)
|
||||
{
|
||||
next = TREE_CHAIN (t);
|
||||
/* Declspecs have a non-NULL TREE_VALUE. */
|
||||
if (TREE_VALUE (t) != NULL_TREE)
|
||||
{
|
||||
if (specs == NULL_TREE)
|
||||
specs = s = t;
|
||||
else
|
||||
{
|
||||
TREE_CHAIN (s) = t;
|
||||
s = t;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (attrs == NULL_TREE)
|
||||
attrs = a = TREE_PURPOSE (t);
|
||||
else
|
||||
{
|
||||
TREE_CHAIN (a) = TREE_PURPOSE (t);
|
||||
a = TREE_PURPOSE (t);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Terminate the lists. */
|
||||
if (s != NULL_TREE)
|
||||
TREE_CHAIN (s) = NULL_TREE;
|
||||
if (a != NULL_TREE)
|
||||
TREE_CHAIN (a) = NULL_TREE;
|
||||
|
||||
/* All done. */
|
||||
*declspecs = specs;
|
||||
*prefix_attributes = attrs;
|
||||
}
|
||||
|
||||
/* Strip attributes from SPECS_ATTRS, a list of declspecs and attributes.
|
||||
This function is used by the parser when a rule will accept attributes
|
||||
in a particular position, but we don't want to support that just yet.
|
||||
|
Loading…
x
Reference in New Issue
Block a user