From dd4dc3cd02b36b757797e7b1eebc56e3a48aa2f9 Mon Sep 17 00:00:00 2001 From: Richard Kenner Date: Thu, 17 Jan 2002 20:34:40 +0000 Subject: [PATCH] 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 --- gcc/ChangeLog | 5 +++++ gcc/attribs.c | 9 ++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 38dc3090b544..9b5241971edd 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +Thu Jan 17 15:28:26 2002 Richard Kenner + + * attribs.c (decl_attributes): Clear ATTR_FLAG_TYPE_IN_PLACE + if type_required and passed decl. + 2002-01-17 Aldy Hernandez * config.gcc (cpu_type): Include altivec.h in powerpc diff --git a/gcc/attribs.c b/gcc/attribs.c index 2f2096d1010c..7cb11724f832 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) -- 2.43.5