attribs.c (c_common_attribute_table): Swap decl_req and type_req for the mode attribute.
* attribs.c (c_common_attribute_table): Swap decl_req and type_req for the mode attribute. (handle_mode_attribute): Handle types, not decls. From-SVN: r47990
This commit is contained in:
parent
803e889402
commit
c3f23a53ba
|
@ -1,4 +1,4 @@
|
||||||
2001-12-09 Aldy Hernandez <aldyh@redhat.com>
|
2001-12-13 Aldy Hernandez <aldyh@redhat.com>
|
||||||
|
|
||||||
* attribs.c (c_common_attribute_table): Swap decl_req and type_req
|
* attribs.c (c_common_attribute_table): Swap decl_req and type_req
|
||||||
for the mode attribute.
|
for the mode attribute.
|
||||||
|
|
|
@ -120,7 +120,7 @@ static const struct attribute_spec c_common_attribute_table[] =
|
||||||
handle_constructor_attribute },
|
handle_constructor_attribute },
|
||||||
{ "destructor", 0, 0, true, false, false,
|
{ "destructor", 0, 0, true, false, false,
|
||||||
handle_destructor_attribute },
|
handle_destructor_attribute },
|
||||||
{ "mode", 1, 1, true, false, false,
|
{ "mode", 1, 1, false, true, false,
|
||||||
handle_mode_attribute },
|
handle_mode_attribute },
|
||||||
{ "section", 1, 1, true, false, false,
|
{ "section", 1, 1, true, false, false,
|
||||||
handle_section_attribute },
|
handle_section_attribute },
|
||||||
|
@ -761,8 +761,7 @@ handle_mode_attribute (node, name, args, flags, no_add_attrs)
|
||||||
int flags ATTRIBUTE_UNUSED;
|
int flags ATTRIBUTE_UNUSED;
|
||||||
bool *no_add_attrs;
|
bool *no_add_attrs;
|
||||||
{
|
{
|
||||||
tree decl = *node;
|
tree type = *node;
|
||||||
tree type = TREE_TYPE (decl);
|
|
||||||
|
|
||||||
*no_add_attrs = true;
|
*no_add_attrs = true;
|
||||||
|
|
||||||
|
@ -786,7 +785,7 @@ handle_mode_attribute (node, name, args, flags, no_add_attrs)
|
||||||
p = newp;
|
p = newp;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Give this decl a type with the specified mode.
|
/* Change this type to have a type with the specified mode.
|
||||||
First check for the special modes. */
|
First check for the special modes. */
|
||||||
if (! strcmp (p, "byte"))
|
if (! strcmp (p, "byte"))
|
||||||
mode = byte_mode;
|
mode = byte_mode;
|
||||||
|
@ -805,12 +804,8 @@ handle_mode_attribute (node, name, args, flags, no_add_attrs)
|
||||||
TREE_UNSIGNED (type))))
|
TREE_UNSIGNED (type))))
|
||||||
error ("no data type for mode `%s'", p);
|
error ("no data type for mode `%s'", p);
|
||||||
else
|
else
|
||||||
{
|
*node = typefm;
|
||||||
TREE_TYPE (decl) = type = typefm;
|
/* No need to layout the type here. The caller should do this. */
|
||||||
DECL_SIZE (decl) = DECL_SIZE_UNIT (decl) = 0;
|
|
||||||
if (TREE_CODE (decl) != FIELD_DECL)
|
|
||||||
layout_decl (decl, 0);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return NULL_TREE;
|
return NULL_TREE;
|
||||||
|
|
Loading…
Reference in New Issue