This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[c++] adding empty throw specs in <typeinfo> creates havoc
- To: gcc-bugs at gcc dot gnu dot org
- Subject: [c++] adding empty throw specs in <typeinfo> creates havoc
- From: Benjamin Kosnik <bkoz at redhat dot com>
- Date: Wed, 10 Jan 2001 21:55:05 -0800
This simple patch, motivated by the spirit of libstdc++/1605
http://gcc.gnu.org/ml/gcc-bugs/2001-01/msg00260.html
Index: typeinfo
===================================================================
RCS file: /cvs/gcc/egcs/libstdc++-v3/libsupc++/typeinfo,v
retrieving revision 1.1
diff -c -p -r1.1 typeinfo
*** typeinfo 2000/10/10 23:43:26 1.1
--- typeinfo 2001/01/11 05:52:04
*************** public:
*** 118,131 ****
class bad_cast : public exception {
public:
! bad_cast() { }
! virtual ~bad_cast() { }
};
class bad_typeid : public exception {
public:
! bad_typeid () { }
! virtual ~bad_typeid () { }
};
} // namespace std
--- 118,131 ----
class bad_cast : public exception {
public:
! bad_cast() throw() { }
! virtual ~bad_cast() throw() { }
};
class bad_typeid : public exception {
public:
! bad_typeid () throw() { }
! virtual ~bad_typeid () throw() { }
};
} // namespace std
Which implements standard-defined behavior as per 18.5.2/18.5.3
causes this:
/mnt/hd/ahimsa/bld-x86-gcc/gcc/g++ -B/mnt/hd/ahimsa/bld-x86-gcc/gcc/ -nostdinc++ -L/mnt/hd/ahimsa/bld-x86-gcc/i686-pc-linux-gnu/libstdc++-v3/src -L/mnt/hd/ahimsa/bld-x86-gcc/i686-pc-linux-gnu/libstdc++-v3/src/.libs -B/mnt/hd/bliss/H-x86-gcc/i686-pc-linux-gnu/bin/ -B/mnt/hd/bliss/H-x86-gcc/i686-pc-linux-gnu/lib/ -isystem /mnt/hd/bliss/H-x86-gcc/i686-pc-linux-gnu/include -I/mnt/hd/bliss/src.gcc/libstdc++-v3/../gcc -I/mnt/hd/bliss/src.gcc/libstdc++-v3/../include -I/mnt/hd/bliss/src.gcc/libstdc++-v3/include -I/mnt/hd/bliss/src.gcc/libstdc++-v3/include/std -I/mnt/hd/bliss/src.gcc/libstdc++-v3/include/c_std -I../include -I/mnt/hd/bliss/src.gcc/libstdc++-v3/libsupc++ -g -O2 -fvtable-thunks -D_GNU_SOURCE -fno-implicit-templates -Wall -Wno-format -W -Wwrite-strings -Winline -fdiagnostics-show-location=once -ffunction-sections -fdata-sections -g -c /mnt/hd/bliss/src.gcc/libstdc++-v3/libsupc++/exception_support.cc -fPIC -DPIC -o .libs/exception_support.o
/mnt/hd/bliss/src.gcc/libstdc++-v3/libsupc++/exception_support.cc: In function
`cp_eh_info* __start_cp_handler()':
/mnt/hd/bliss/src.gcc/libstdc++-v3/libsupc++/exception_support.cc:124: warning: new
declaration `cp_eh_info* __start_cp_handler()'
/mnt/hd/bliss/src.gcc/libstdc++-v3/libsupc++/exception_support.cc:124: warning: ambiguates
built-in declaration `cp_eh_info* __start_cp_handler()'
/mnt/hd/bliss/src.gcc/libstdc++-v3/libsupc++/exception_support.cc: In function
`void __check_eh_spec(int, const void**)':
/mnt/hd/bliss/src.gcc/libstdc++-v3/libsupc++/exception_support.cc:316: `&__cp_pop_exception'
cannot be used as a function
/mnt/hd/bliss/src.gcc/libstdc++-v3/libsupc++/exception_support.cc: In copy
constructor `std::exception::exception(const std::exception&)':
/mnt/hd/bliss/src.gcc/libstdc++-v3/libsupc++/exception_support.cc:333: `&__cp_pop_exception'
cannot be used as a function
/mnt/hd/bliss/src.gcc/libstdc++-v3/libsupc++/exception_support.cc: In copy
constructor `std::bad_exception::bad_exception(const std::bad_exception&)':
/mnt/hd/bliss/src.gcc/libstdc++-v3/libsupc++/exception_support.cc:333: `&__cp_pop_exception'
cannot be used as a function
/mnt/hd/bliss/src.gcc/libstdc++-v3/libsupc++/exception_support.cc: In function
`void __check_null_eh_spec()':
/mnt/hd/bliss/src.gcc/libstdc++-v3/libsupc++/exception_support.cc:346: warning: `noreturn'
function does return
/mnt/hd/bliss/src.gcc/libstdc++-v3/libsupc++/exception_support.cc: In copy
constructor `std::bad_cast::bad_cast(const std::bad_cast&)':
/mnt/hd/bliss/src.gcc/libstdc++-v3/libsupc++/exception_support.cc:362: `&__cp_pop_exception'
cannot be used as a function
/mnt/hd/bliss/src.gcc/libstdc++-v3/libsupc++/exception_support.cc: In copy
constructor `std::bad_typeid::bad_typeid(const std::bad_typeid&)':
/mnt/hd/bliss/src.gcc/libstdc++-v3/libsupc++/exception_support.cc:369: `&__cp_pop_exception'
cannot be used as a function
make: *** [exception_support.lo] Error 1
<bkoz@fillmore> /mnt/hd/ahimsa/bld-x86-gcc/i686-pc-linux-gnu/libstdc++-v3/libsupc++