This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: RFC: Deprecate (a little bit) of C++ attribute syntax
- From: Mark Mitchell <mark at codesourcery dot com>
- To: Gabriel Dos Reis <gdr at integrable-solutions dot net>
- Cc: "gcc at gcc dot gnu dot org" <gcc at gcc dot gnu dot org>, "jason at redhat dot com" <jason at redhat dot com>, "nathan at codesourcery dot com" <nathan at codesourcery dot com>, "gdr at codesourcery dot com" <gdr at codesourcery dot com>
- Date: Tue, 13 Aug 2002 23:37:33 -0700
- Subject: Re: RFC: Deprecate (a little bit) of C++ attribute syntax
--On Wednesday, August 14, 2002 02:08:17 AM +0200 Gabriel Dos Reis
<gdr@integrable-solutions.net> wrote:
Mark Mitchell <mark@codesourcery.com> writes:
| Currently, the C++ front end accepts this syntax:
|
| int x (3) __attribute__((unused));
[...]
| Therefore, I'm proposing deprecating this syntax in GCC 3.3 and
| removing it in GCC 3.4 (with the new parser).
| I'm not sure if I can
| get the old parser to actually warn about this (it's confused and
| thinks the parenthesized initializer is part of the declarator, but
| there is then later magic to untangle that!)
Do you think it is the same reason why it seems to ignore
attributes for nested typedef-names? I.e. in
struct A {
struct X { } __attribute__((__aligned__(4)));
typedef struct { } Y __attribute__((__aligned__(4)));
};
That's probably caused by something else -- but it could well be related.
I mostly agree with all of yours suggestions -- as you know, I've been
working on the attribute stuff these days. The oddity you mention may
be more prenicious. Consider:
template<typename T>
struct X { } __attribute__((__aligned__(__alignof__(T))));
This may, at first sight, look innocent, but it doesn't do the obvious
thing one thinks of.
Again, similar -- but different. (I was only worrying about the
parenthesized initializer case.)
The attributes after the curly brace case is interesting too, though.
This syntax (unlike the one I mentioned) has been supported by the C
front end for a long time, which makes it much harder to deprecate in
C++.
Thanks,
--
Mark Mitchell mark@codesourcery.com
CodeSourcery, LLC http://www.codesourcery.com