egcs-971122 problem: typeid
Joseph Heled
pepe@iconz.co.nz
Tue Nov 25 12:03:00 GMT 1997
Hi,
If this is not a bug, I sure wish egcs would issue a diagnostic (warning) of
some kind.
egcs compiles the following two files, but program behaves incorrectly: it
prints 'wrong'!
(obviously, when definitions of X and Y are placed in a common .h file, there is
no problem)
file 1
--------------------------------------------
#include <typeinfo>
class X;
bool f(X& x) {
return typeid(x) == typeid(X);
}
---------------------------------------------
file 2
--------------------------------------------
struct X { virtual ~X() {} };
struct Y : X {
virtual ~Y() {}
};
main()
{
extern bool f(X& x);
Y y;
if( f(y) ) {
printf("wrong\n");
} else {
printf("correct\n");
}
}
---------------------------------------------
compilation
/export/home/users/joseph/egcs-971122/bin/g++ -v -Wall -o m c2.cc c1.cc
Reading specs from
/export/home/users/joseph/egcs-971122/lib/gcc-lib/sparc-sun-solaris2.5/egcs-2.90.17/specs
gcc version egcs-2.90.17 971114 (gcc2-970802 experimental)
/export/home/users/joseph/egcs-971122/lib/gcc-lib/sparc-sun-solaris2.5/egcs-2.90.17/cpp
-lang-c++ -v -undef -D__GNUC__=2 -D__GNUG__=2 -D__cplusplus -D__GNUC_MINOR__=90
-Dsparc -Dsun -Dunix -D__svr4__ -D__SVR4 -D__sparc__ -D__sun__ -D__unix__
-D__svr4__ -D__SVR4 -D__sparc -D__sun -D__unix -Asystem(unix) -Asystem(svr4)
-D__EXCEPTIONS -Wall -D__GCC_NEW_VARARGS__ -Acpu(sparc) -Amachine(sparc) c2.cc
/var/tmp/cca001Me.ii
GNU CPP version egcs-2.90.17 971114 (gcc2-970802 experimental) (sparc)
#include "..." search starts here:
#include <...> search starts here:
/export/home/users/joseph/egcs-971122/include/g++
/usr/local/include
/export/home/users/joseph/egcs-971122/sparc-sun-solaris2.5/include
/export/home/users/joseph/egcs-971122/lib/gcc-lib/sparc-sun-solaris2.5/egcs-2.90.17/include
/usr/include
End of search list.
/export/home/users/joseph/egcs-971122/lib/gcc-lib/sparc-sun-solaris2.5/egcs-2.90.17/cc1plus
/var/tmp/cca001Me.ii -quiet -dumpbase c2.cc -Wall -version -o
/var/tmp/cca001Me.s
GNU C++ version egcs-2.90.17 971114 (gcc2-970802 experimental)
(sparc-sun-solaris2.5) compiled by GNU C version egcs-2.90.17 971114
(gcc2-970802 experimental).
c2.cc: In function `int main()':
c2.cc:14: warning: implicit declaration of function `int printf(...)'
/usr/ccs/bin/as -V -Qy -s -o /var/tmp/cca001Me1.o /var/tmp/cca001Me.s
/usr/ccs/bin/as: SC4.0 dev 15 Feb 1995
/export/home/users/joseph/egcs-971122/lib/gcc-lib/sparc-sun-solaris2.5/egcs-2.90.17/cpp
-lang-c++ -v -undef -D__GNUC__=2 -D__GNUG__=2 -D__cplusplus -D__GNUC_MINOR__=90
-Dsparc -Dsun -Dunix -D__svr4__ -D__SVR4 -D__sparc__ -D__sun__ -D__unix__
-D__svr4__ -D__SVR4 -D__sparc -D__sun -D__unix -Asystem(unix) -Asystem(svr4)
-D__EXCEPTIONS -Wall -D__GCC_NEW_VARARGS__ -Acpu(sparc) -Amachine(sparc) c1.cc
/var/tmp/cca001Me.ii
GNU CPP version egcs-2.90.17 971114 (gcc2-970802 experimental) (sparc)
#include "..." search starts here:
#include <...> search starts here:
/export/home/users/joseph/egcs-971122/include/g++
/usr/local/include
/export/home/users/joseph/egcs-971122/sparc-sun-solaris2.5/include
/export/home/users/joseph/egcs-971122/lib/gcc-lib/sparc-sun-solaris2.5/egcs-2.90.17/include
/usr/include
End of search list.
/export/home/users/joseph/egcs-971122/lib/gcc-lib/sparc-sun-solaris2.5/egcs-2.90.17/cc1plus
/var/tmp/cca001Me.ii -quiet -dumpbase c1.cc -Wall -version -o
/var/tmp/cca001Me.s
GNU C++ version egcs-2.90.17 971114 (gcc2-970802 experimental)
(sparc-sun-solaris2.5) compiled by GNU C version egcs-2.90.17 971114
(gcc2-970802 experimental).
/usr/ccs/bin/as -V -Qy -s -o /var/tmp/cca001Me2.o /var/tmp/cca001Me.s
/usr/ccs/bin/as: SC4.0 dev 15 Feb 1995
/export/home/users/joseph/egcs-971122/lib/gcc-lib/sparc-sun-solaris2.5/egcs-2.90.17/ld
-V -Y P,/usr/ccs/lib:/usr/lib -Qy -o m
/export/home/users/joseph/egcs-971122/lib/gcc-lib/sparc-sun-solaris2.5/egcs-2.90.17/crt1.o
/export/home/users/joseph/egcs-971122/lib/gcc-lib/sparc-sun-solaris2.5/egcs-2.90.17/crti.o
/usr/ccs/lib/values-Xa.o
/export/home/users/joseph/egcs-971122/lib/gcc-lib/sparc-sun-solaris2.5/egcs-2.90.17/crtbegin.o
-L/export/home/users/joseph/egcs-971122/lib/gcc-lib/sparc-sun-solaris2.5/egcs-2.90.17
-L/export/home/users/joseph/egcs-971122/sparc-sun-solaris2.5/lib -L/usr/ccs/bin
-L/usr/ccs/lib -L/export/home/users/joseph/egcs-971122/lib /var/tmp/cca001Me1.o
/var/tmp/cca001Me2.o -lstdc++ -lm -lgcc -lc -lgcc
/export/home/users/joseph/egcs-971122/lib/gcc-lib/sparc-sun-solaris2.5/egcs-2.90.17/crtend.o
/export/home/users/joseph/egcs-971122/lib/gcc-lib/sparc-sun-solaris2.5/egcs-2.90.17/crtn.o
ld: Software Generation Utilities (SGU) SunOS/ELF (LK-2.0 (S/I) - versioning)
Compilation finished at Wed Nov 26 08:59:52
More information about the Gcc-bugs
mailing list