Missing type_info node with -frepo AND -fno-exceptions

Teemu Torma tot@Trema.COM
Mon Sep 15 00:44:00 GMT 1997


In snapshot 970910, if using -frepo and -fno-exceptions together, 
no type_info node gets created for templates.  No problems if 
-fno-exceptions
is removed from the command line.

(the version number gcc reports is wrong, it is really 970910)

$ gcc -v -frepo -fno-exceptions -fno-implicit-templates -O2 -c bug.cc
Reading specs from /usr/gnu/lib/gcc-lib/sparc-sun-solaris2.5.1/egcs-2.90.06
/specs
gcc version egcs-2.90.06 970907 (gcc2-970802 experimental)
 /usr/gnu/lib/gcc-lib/sparc-sun-solaris2.5.1/egcs-2.90.06/cpp -lang-c++ -v 
-undef -D__GNUC__=2 -D__GNUG__=2 -D__cplusplus -D__GNUC_MINOR__=90 -Dsun 
-Dsparc -Dunix -D__svr4__ -D__SVR4 -D__GCC_NEW_VARARGS__ -D__sun__ 
-D__sparc__ -D__unix__ -D__svr4__ -D__SVR4 -D__GCC_NEW_VARARGS__ -D__sun 
-D__sparc -D__unix -Asystem(unix) -Asystem(svr4) -Acpu(sparc) 
-Amachine(sparc) -D__OPTIMIZE__ bug.cc /var/tmp/cca001kF.ii
GNU CPP version egcs-2.90.06 970907 (gcc2-970802 experimental) (sparc)
#include "..." search starts here:
#include <...> search starts here:
 /usr/gnu/lib/g++-include
 /usr/local/include
 /usr/gnu/sparc-sun-solaris2.5.1/include
 /usr/gnu/lib/gcc-lib/sparc-sun-solaris2.5.1/egcs-2.90.06/include
 /usr/include
End of search list.
 /usr/gnu/lib/gcc-lib/sparc-sun-solaris2.5.1/egcs-2.90.06/cc1plus 
/var/tmp/cca001kF.ii -quiet -dumpbase bug.cc -O2 -version -frepo 
-fno-exceptions -fno-implicit-templates -o /var/tmp/cca001kF.s
GNU C++ version egcs-2.90.06 970907 (gcc2-970802 experimental) 
(sparc-sun-solaris2.5.1) compiled by GNU C version egcs-2.90.06 970907 
(gcc2-970802 experimental).
 /usr/ccs/bin/as -V -Qy -s -o bug.o /var/tmp/cca001kF.s
/usr/ccs/bin/as: SC4.2 dev 30 Nov 1995
$ gcc -v bug.o
Reading specs from /usr/gnu/lib/gcc-lib/sparc-sun-solaris2.5.1/egcs-2.90.06
/specs
gcc version egcs-2.90.06 970907 (gcc2-970802 experimental)
 /usr/gnu/lib/gcc-lib/sparc-sun-solaris2.5.1/egcs-2.90.06/ld -V -Y 
P,/usr/ccs/lib:/usr/lib -Qy /usr/gnu/lib/gcc-lib/sparc-sun-solaris2.5.1/egc
s-2.90.06/crt1.o /usr/gnu/lib/gcc-lib/sparc-sun-solaris2.5.1/egcs-2.90.06/c
rti.o /usr/ccs/lib/values-Xa.o /usr/gnu/lib/gcc-lib/sparc-sun-solaris2.5.1/
egcs-2.90.06/crtbegin.o -L/usr/gnu/lib/gcc-lib/sparc-sun-solaris2.5.1/egcs-
2.90.06 -L/usr/ccs/bin -L/usr/ccs/lib -L/usr/gnu/lib bug.o -lgcc -lc -lgcc 
/usr/gnu/lib/gcc-lib/sparc-sun-solaris2.5.1/egcs-2.90.06/crtend.o 
/usr/gnu/lib/gcc-lib/sparc-sun-solaris2.5.1/egcs-2.90.06/crtn.o
ld: Software Generation Utilities (SGU) SunOS/ELF (LK-2.0 (S/I) - 
versioning)
Undefined			first referenced
 symbol  			    in file
B<int> type_info function           bug.o
B<int> type_info node               bug.o
ld: fatal: Symbol referencing errors. No output written to a.out
collect2: ld returned 1 exit status

-------------------------------------------------------------------------
struct A
{
  inline A(){}
  virtual ~A(){}
};

template<class T>
struct B : public A
{
  inline B(){}
  ~B() {}
};

struct C : public B<int>
{
  inline C(){}
  ~C(){}
};

C *t ()
{
  return new C;
}

main ()
{
  t ();
}

------------------------------------------------------------------------

Teemu





More information about the Gcc-bugs mailing list