public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug c++/62051] New: [4.9/4.10] Undefined reference to vtable with -O2 and -fdevirtualize-speculatively
@ 2014-08-07 13:03 raphael.kubo.da.costa at intel dot com
  2014-11-19 13:27 ` [Bug c++/62051] " rguenth at gcc dot gnu.org
                   ` (18 more replies)
  0 siblings, 19 replies; 20+ messages in thread
From: raphael.kubo.da.costa at intel dot com @ 2014-08-07 13:03 UTC (permalink / raw)
  To: gcc-bugs

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=62051

            Bug ID: 62051
           Summary: [4.9/4.10] Undefined reference to vtable with -O2 and
                    -fdevirtualize-speculatively
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: raphael.kubo.da.costa at intel dot com

classes.h:
#ifndef CLASSES_H
#define CLASSES_H
struct Base {
  virtual ~Base() {}
  virtual void virt_func() = 0;
};
struct Derived : public Base {
 public:
  __attribute__((visibility("default"))) Derived();
  virtual ~Derived() { func(); }
  virtual void virt_func();
  __attribute__((visibility("default"))) void func();
};
#endif

classes.cc:
#include "classes.h"
Derived::Derived() {}
void Derived::virt_func() {}
void Derived::func() {}

main.cc:
#include "classes.h"
void f() {
  Derived* m = new Derived;
  delete m;
}
int main() {
  f();
  return 0;
}

Building it with:
  g++ -fvisibility=hidden -fPIC -shared -o libclasses.so classes.cc
  g++ -fPIC -O2 main.cc libclasses.so

Everything works fine with GCC 4.8, but both 4.9 and 4.10-snapshot fail like
this, unless I either use a lower optimization level or pass
-fno-devirtualize-speculatively:
/tmp/ccXRd3i4.o: In function `f()':
main.cc:(.text+0x2e): undefined reference to `vtable for Derived'
/tmp/ccXRd3i4.o: In function `Derived::~Derived()':
main.cc:(.text._ZN7DerivedD0Ev[_ZN7DerivedD5Ev]+0x3): undefined reference to
`vtable for Derived'
/tmp/ccXRd3i4.o: In function `Derived::~Derived()':
main.cc:(.text._ZN7DerivedD2Ev[_ZN7DerivedD5Ev]+0x7): undefined reference to
`vtable for Derived'

GCC 4.8:
Using built-in specs.
COLLECT_GCC=g++-4.8
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.8/lto-wrapper
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Debian 4.8.3-7'
--with-bugurl=file:///usr/share/doc/gcc-4.8/README.Bugs
--enable-languages=c,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr
--program-suffix=-4.8 --enable-shared --enable-linker-build-id
--libexecdir=/usr/lib --without-included-gettext --enable-threads=posix
--with-gxx-include-dir=/usr/include/c++/4.8 --libdir=/usr/lib --enable-nls
--with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug
--enable-libstdcxx-time=yes --enable-gnu-unique-object --disable-libmudflap
--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.8-amd64/jre --enable-java-home
--with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64
--with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-4.8-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 --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.8.3 (Debian 4.8.3-7)

GCC 4.9:
Using built-in specs.
COLLECT_GCC=/usr/bin/g++
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.1-4'
--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.1 (Debian 4.9.1-4)

GCC 4.10:
Using built-in specs.
COLLECT_GCC=/usr/lib/gcc-snapshot/bin/g++
COLLECT_LTO_WRAPPER=/usr/lib/gcc-snapshot/libexec/gcc/x86_64-linux-gnu/4.10.0/lto-wrapper
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Debian 20140802-1'
--with-bugurl=file:///usr/share/doc/gcc-snapshot/README.Bugs
--enable-languages=c,ada,c++,java,go,fortran,objc,obj-c++
--prefix=/usr/lib/gcc-snapshot --enable-shared --enable-linker-build-id
--disable-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.10-snap-amd64/jre
--enable-java-home
--with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-4.10-snap-amd64
--with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-4.10-snap-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
--disable-werror --enable-checking=yes --build=x86_64-linux-gnu
--host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 4.10.0 20140802 (experimental) [trunk revision 213518] (Debian
20140802-1)


^ permalink raw reply	[flat|nested] 20+ messages in thread

end of thread, other threads:[~2023-07-27  9:20 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-08-07 13:03 [Bug c++/62051] New: [4.9/4.10] Undefined reference to vtable with -O2 and -fdevirtualize-speculatively raphael.kubo.da.costa at intel dot com
2014-11-19 13:27 ` [Bug c++/62051] " rguenth at gcc dot gnu.org
2015-03-19  9:31 ` [Bug ipa/62051] [4.9/5 Regression] " rguenth at gcc dot gnu.org
2015-03-19 10:38 ` trippels at gcc dot gnu.org
2015-03-19 19:15 ` hubicka at gcc dot gnu.org
2015-03-23 15:50 ` jakub at gcc dot gnu.org
2015-03-23 19:30 ` jason at gcc dot gnu.org
2015-03-23 23:20 ` hubicka at ucw dot cz
2015-06-26 20:05 ` [Bug ipa/62051] [4.9/5/6 " jakub at gcc dot gnu.org
2015-06-26 20:34 ` jakub at gcc dot gnu.org
2015-10-12  8:45 ` jason at gcc dot gnu.org
2020-03-21 13:59 ` [Bug ipa/62051] [8/9/10 " hubicka at gcc dot gnu.org
2021-04-27 11:37 ` [Bug ipa/62051] [8/9/10/11/12 " jakub at gcc dot gnu.org
2021-07-28  7:04 ` [Bug ipa/62051] [9/10/11/12 " rguenth at gcc dot gnu.org
2021-09-10  7:20 ` pinskia at gcc dot gnu.org
2021-09-10 14:39 ` jason at gcc dot gnu.org
2022-04-21  7:47 ` rguenth at gcc dot gnu.org
2022-12-20 12:55 ` [Bug ipa/62051] [10/11/12/13 " rguenth at gcc dot gnu.org
2023-04-26  6:55 ` [Bug ipa/62051] [10/11/12/13/14 " rguenth at gcc dot gnu.org
2023-07-27  9:20 ` [Bug ipa/62051] [11/12/13/14 " rguenth 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).