public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/65879] New: Bogus linkage errors for member class of anonymous class
@ 2015-04-24 16:42 tim.bagot at hds dot com
2015-04-25 5:58 ` [Bug c++/65879] [4.8/4.9/5/6 Regression] " redi at gcc dot gnu.org
` (5 more replies)
0 siblings, 6 replies; 7+ messages in thread
From: tim.bagot at hds dot com @ 2015-04-24 16:42 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65879
Bug ID: 65879
Summary: Bogus linkage errors for member class of anonymous
class
Product: gcc
Version: 4.9.2
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: tim.bagot at hds dot com
The following C++ snippet:
static struct
{
void f();
struct Inner
{
void g();
};
} x;
results in:
$ gcc -c test.cpp
test.cpp:6:14: error: anonymous type with no linkage used to declare function
'void<anonymous struct>::Inner::g()' with linkage [-fpermissive]
void g();
^
I think this error is incorrect.
- C++98 does not seem to define what it means for a type to be "used" in a
declaration. (C++11 is clearer - and indeed -std=c++11 makes the error
disappear.) But even if you take a broad interpretation, it is hard to see how
it could apply to g() but not to f().
- The function g() does not have linkage. As a class member, it can only have
linkage if Inner has linkage. Inner can only have linkage if the outer class
has linkage. The outer class, being anonymous, does not have linkage (else
there would be no error). Therefore g() does not have linkage. (And again if
g() did have linkage, then f() surely must as well.)
This is a regression, as 4.4 does not report this error.
The bug is perhaps somewhat related to PR 55877 - but that (as I read it)
involves specifically the typedef struct idiom, and is marked FIXED in 4.9.
For completeness:
$ gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.9/lto-wrapper
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Debian 4.9.2-10'
--with-bugurl=file:///usr/share/doc/gcc-4.9/README.Bugs
--enable-languages=c,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr
--program-suffix=-4.9 --enable-shared --enable-linker-build-id
--libexecdir=/usr/lib --without-included-gettext --enable-threads=posix
--with-gxx-include-dir=/usr/include/c++/4.9 --libdir=/usr/lib --enable-nls
--with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug
--enable-libstdcxx-time=yes --enable-gnu-unique-object --disable-vtable-verify
--enable-plugin --with-system-zlib --disable-browser-plugin
--enable-java-awt=gtk --enable-gtk-cairo
--with-java-home=/usr/lib/jvm/java-1.5.0-gcj-4.9-amd64/jre --enable-java-home
--with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-4.9-amd64
--with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-4.9-amd64
--with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar
--enable-objc-gc --enable-multiarch --with-arch-32=i586 --with-abi=m64
--with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic
--enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu
--target=x86_64-linux-gnu
Thread model: posix
gcc version 4.9.2 (Debian 4.9.2-10)
^ permalink raw reply [flat|nested] 7+ messages in thread
* [Bug c++/65879] [4.8/4.9/5/6 Regression] Bogus linkage errors for member class of anonymous class
2015-04-24 16:42 [Bug c++/65879] New: Bogus linkage errors for member class of anonymous class tim.bagot at hds dot com
@ 2015-04-25 5:58 ` redi at gcc dot gnu.org
2015-06-22 20:07 ` jason at gcc dot gnu.org
` (4 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: redi at gcc dot gnu.org @ 2015-04-25 5:58 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65879
Jonathan Wakely <redi at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Last reconfirmed| |2015-04-25
Summary|Bogus linkage errors for |[4.8/4.9/5/6 Regression]
|member class of anonymous |Bogus linkage errors for
|class |member class of anonymous
| |class
Ever confirmed|0 |1
Known to fail| |4.5.4
^ permalink raw reply [flat|nested] 7+ messages in thread
* [Bug c++/65879] [4.8/4.9/5/6 Regression] Bogus linkage errors for member class of anonymous class
2015-04-24 16:42 [Bug c++/65879] New: Bogus linkage errors for member class of anonymous class tim.bagot at hds dot com
2015-04-25 5:58 ` [Bug c++/65879] [4.8/4.9/5/6 Regression] " redi at gcc dot gnu.org
@ 2015-06-22 20:07 ` jason at gcc dot gnu.org
2015-06-23 14:09 ` [Bug c++/65879] [4.9/5/6 " jason at gcc dot gnu.org
` (3 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: jason at gcc dot gnu.org @ 2015-06-22 20:07 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65879
Jason Merrill <jason at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |ASSIGNED
CC| |jason at gcc dot gnu.org
Assignee|unassigned at gcc dot gnu.org |jason at gcc dot gnu.org
Target Milestone|--- |4.9.3
^ permalink raw reply [flat|nested] 7+ messages in thread
* [Bug c++/65879] [4.9/5/6 Regression] Bogus linkage errors for member class of anonymous class
2015-04-24 16:42 [Bug c++/65879] New: Bogus linkage errors for member class of anonymous class tim.bagot at hds dot com
2015-04-25 5:58 ` [Bug c++/65879] [4.8/4.9/5/6 Regression] " redi at gcc dot gnu.org
2015-06-22 20:07 ` jason at gcc dot gnu.org
@ 2015-06-23 14:09 ` jason at gcc dot gnu.org
2015-06-23 14:29 ` jason at gcc dot gnu.org
` (2 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: jason at gcc dot gnu.org @ 2015-06-23 14:09 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65879
--- Comment #1 from Jason Merrill <jason at gcc dot gnu.org> ---
Author: jason
Date: Tue Jun 23 14:08:30 2015
New Revision: 224844
URL: https://gcc.gnu.org/viewcvs?rev=224844&root=gcc&view=rev
Log:
PR c++/65879
* decl.c (grokfndecl): Check the linkage of ctype, not just
TYPE_ANONYMOUS_P.
* tree.c (no_linkage_check): Skip the 'this' pointer.
Added:
trunk/gcc/testsuite/g++.dg/other/anon7.C
Modified:
trunk/gcc/cp/ChangeLog
trunk/gcc/cp/decl.c
trunk/gcc/cp/tree.c
trunk/gcc/testsuite/g++.dg/abi/anon2.C
^ permalink raw reply [flat|nested] 7+ messages in thread
* [Bug c++/65879] [4.9/5/6 Regression] Bogus linkage errors for member class of anonymous class
2015-04-24 16:42 [Bug c++/65879] New: Bogus linkage errors for member class of anonymous class tim.bagot at hds dot com
` (2 preceding siblings ...)
2015-06-23 14:09 ` [Bug c++/65879] [4.9/5/6 " jason at gcc dot gnu.org
@ 2015-06-23 14:29 ` jason at gcc dot gnu.org
2015-06-23 14:30 ` jason at gcc dot gnu.org
2015-06-24 20:02 ` jason at gcc dot gnu.org
5 siblings, 0 replies; 7+ messages in thread
From: jason at gcc dot gnu.org @ 2015-06-23 14:29 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65879
--- Comment #2 from Jason Merrill <jason at gcc dot gnu.org> ---
Author: jason
Date: Tue Jun 23 14:28:55 2015
New Revision: 224846
URL: https://gcc.gnu.org/viewcvs?rev=224846&root=gcc&view=rev
Log:
PR c++/65879
* tree.c (no_linkage_check): Skip the 'this' pointer.
Added:
branches/gcc-5-branch/gcc/testsuite/g++.dg/other/anon7.C
Modified:
branches/gcc-5-branch/gcc/cp/ChangeLog
branches/gcc-5-branch/gcc/cp/tree.c
^ permalink raw reply [flat|nested] 7+ messages in thread
* [Bug c++/65879] [4.9/5/6 Regression] Bogus linkage errors for member class of anonymous class
2015-04-24 16:42 [Bug c++/65879] New: Bogus linkage errors for member class of anonymous class tim.bagot at hds dot com
` (3 preceding siblings ...)
2015-06-23 14:29 ` jason at gcc dot gnu.org
@ 2015-06-23 14:30 ` jason at gcc dot gnu.org
2015-06-24 20:02 ` jason at gcc dot gnu.org
5 siblings, 0 replies; 7+ messages in thread
From: jason at gcc dot gnu.org @ 2015-06-23 14:30 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65879
--- Comment #3 from Jason Merrill <jason at gcc dot gnu.org> ---
Author: jason
Date: Tue Jun 23 14:29:51 2015
New Revision: 224847
URL: https://gcc.gnu.org/viewcvs?rev=224847&root=gcc&view=rev
Log:
PR c++/65879
* tree.c (no_linkage_check): Skip the 'this' pointer.
Added:
branches/gcc-4_9-branch/gcc/testsuite/g++.dg/other/anon7.C
Modified:
branches/gcc-4_9-branch/gcc/cp/ChangeLog
branches/gcc-4_9-branch/gcc/cp/tree.c
^ permalink raw reply [flat|nested] 7+ messages in thread
* [Bug c++/65879] [4.9/5/6 Regression] Bogus linkage errors for member class of anonymous class
2015-04-24 16:42 [Bug c++/65879] New: Bogus linkage errors for member class of anonymous class tim.bagot at hds dot com
` (4 preceding siblings ...)
2015-06-23 14:30 ` jason at gcc dot gnu.org
@ 2015-06-24 20:02 ` jason at gcc dot gnu.org
5 siblings, 0 replies; 7+ messages in thread
From: jason at gcc dot gnu.org @ 2015-06-24 20:02 UTC (permalink / raw)
To: gcc-bugs
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65879
Jason Merrill <jason at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|ASSIGNED |RESOLVED
Resolution|--- |FIXED
--- Comment #4 from Jason Merrill <jason at gcc dot gnu.org> ---
Fixed.
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2015-06-24 20:02 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-04-24 16:42 [Bug c++/65879] New: Bogus linkage errors for member class of anonymous class tim.bagot at hds dot com
2015-04-25 5:58 ` [Bug c++/65879] [4.8/4.9/5/6 Regression] " redi at gcc dot gnu.org
2015-06-22 20:07 ` jason at gcc dot gnu.org
2015-06-23 14:09 ` [Bug c++/65879] [4.9/5/6 " jason at gcc dot gnu.org
2015-06-23 14:29 ` jason at gcc dot gnu.org
2015-06-23 14:30 ` jason at gcc dot gnu.org
2015-06-24 20:02 ` jason at gcc dot gnu.org
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).