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