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).