This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c++/27884] [4.2 regression] bogus error: invalid use of 'register' in linkage specification
- From: "tbm at cyrius dot com" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 4 Jun 2006 10:24:06 -0000
- Subject: [Bug c++/27884] [4.2 regression] bogus error: invalid use of 'register' in linkage specification
- References: <bug-27884-12387@http.gcc.gnu.org/bugzilla/>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Comment #3 from tbm at cyrius dot com 2006-06-04 10:24 -------
I don't know why Perl uses it, I simply noticed that lots of packages in Debian
now fail to build because its part of a Perl header... they do this:
extern "C" SV* Perl_Gsv_placeholder_ptr(register PerlInterpreter *my_perl
__attribute__((unused)));
In an IRC discussion whether this is valid, the following comments were made:
18:11 < Womble2> "a linkage-specification directly containing a single
declaration shall not specify a storage class" (7.5/8)
18:12 < Womble2> but I think it really means at the top-level of the
declaration
18:12 < pinskia> Womble2: I think that means extern "C" static int t; is
invalid
18:12 < Womble2> yes the example it gives has a function declared a static
18:13 < pinskia> but register allows to the argument and not to the declaration
18:13 < pinskia> s/allows/applies/
18:14 < Womble2> indeed, though the statement could be (rather perversely) read
as disallow specification of a storage class anywhere in the declaration, as
the person who made the change may have done
[Womble2 = Ben Hutchings, pinskia = Andrew Pinski]
Do you disagree with that interpretation?
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27884