diff options
author | Richard Kenner <kenner@vlsi1.ultra.nyu.edu> | 2002-01-17 20:34:40 +0000 |
---|---|---|
committer | Richard Kenner <kenner@gcc.gnu.org> | 2002-01-17 15:34:40 -0500 |
commit | dd4dc3cd02b36b757797e7b1eebc56e3a48aa2f9 (patch) | |
tree | 3ea62dd698751e51407731d82ae73ecc7a4e1fcd /gcc/attribs.c | |
parent | 5fb4cf24563b5753ff812634bfda611e15632025 (diff) | |
download | gcc-dd4dc3cd02b36b757797e7b1eebc56e3a48aa2f9.tar.gz |
attribs.c (decl_attributes): Clear ATTR_FLAG_TYPE_IN_PLACE if type_required and passed decl.
* attribs.c (decl_attributes): Clear ATTR_FLAG_TYPE_IN_PLACE
if type_required and passed decl.
From-SVN: r48964
Diffstat (limited to 'gcc/attribs.c')
-rw-r--r-- | gcc/attribs.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/gcc/attribs.c b/gcc/attribs.c index 2f2096d1010..7cb11724f83 100644 --- a/gcc/attribs.c +++ b/gcc/attribs.c @@ -338,8 +338,15 @@ decl_attributes (node, attributes, flags) } } + /* If we require a type, but were passed a decl, set up to make a + new type and update the one in the decl. ATTR_FLAG_TYPE_IN_PLACE + would have applied if we'd been passed a type, but we cannot modify + the decl's type in place here. */ if (spec->type_required && DECL_P (*anode)) - anode = &TREE_TYPE (*anode); + { + anode = &TREE_TYPE (*anode); + flags &= ~(int) ATTR_FLAG_TYPE_IN_PLACE; + } if (spec->function_type_required && TREE_CODE (*anode) != FUNCTION_TYPE && TREE_CODE (*anode) != METHOD_TYPE) |