This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

More info. Re: Template regression


I've found the time to track down the bug further.
It looks weirder all the time.

Simple problematic example:

#include <vector>
int main()
	{
	vector<double>in;

	in.push_back(0.5);
	}

compiles and runs fine with g++ micro.C

Now, use:
g++ -frepo -c micro.C
g++ -o micro -frepo micro.o

oops:
micro.o: In function `vector<double, __default_alloc_template<true, 0> >::push_back(double const &)':
micro.o(.vector<double, __default_alloc_template<1, 0> >::gnu.linkonce.t.push_back(double const &)+0x37): undefined reference to `vector<double, __default_alloc_template<true, 0> >::insert_aux(double *, double const &)'
collect2: ld returned 1 exit status

In case this is of interest, here is micro.rpo, as seen with c++filt

M micro.C
D /home/espie/t
A '-g' '-Wall' '-frepo' '-c'
O vector<double, __default_alloc_template<1, 0> >::end(void)
O vector<double, __default_alloc_template<1, 0> >::end(void) const
O vector<double, __default_alloc_template<1, 0> >::insert_aux(double *, double const &)
O void construct<double, double>(double *, double const &)
O vector<double, __default_alloc_template<1, 0> >::push_back(double const &)
O vector<double, __default_alloc_template<1, 0> >::vector(void)
O __default_alloc_template<1, 0>::lock::lock(void)
O __default_alloc_template<1, 0>::__node_allocator_lock
O __default_alloc_template<1, 0>::lock::~lock(void)
O __default_alloc_template<1, 0>::FREELIST_INDEX(unsigned int)
O __default_alloc_template<1, 0>::free_list
O __malloc_alloc_template<0>::deallocate(void *, unsigned int)
O __default_alloc_template<1, 0>::deallocate(void *, unsigned int)
O simple_alloc<double, __default_alloc_template<1, 0> >::deallocate(double *, unsigned int)
O vector<double, __default_alloc_template<1, 0> >::deallocate(void)
O void __destroy_aux<double *>(double *, double *, __true_type)
O void __destroy<double *, double>(double *, double *, double *)
O iterator_traits<double *>::value_type * value_type<double *>(double * const &)
O void destroy<double *>(double *, double *)
O vector<double, __default_alloc_template<1, 0> >::~vector(void)
O int lexicographical_compare_3way<signed char const *, signed char const *>(signed char const *, signed char const *, signed char const *, signed char const *)
O int const & min<int>(int const &, int const &)
O bool lexicographical_compare<signed char const *, signed char const *>(signed char const *, signed char const *, signed char const *, signed char const *)
O unsigned int const & min<unsigned int>(unsigned int const &, unsigned int const &)

and without c++filt:
M micro.C
D /home/espie/t
A '-frepo' '-c'
O end__t6vector2ZdZt24__default_alloc_template2b1i0
O end__Ct6vector2ZdZt24__default_alloc_template2b1i0
O insert_aux__t6vector2ZdZt24__default_alloc_template2b1i0PdRCd
O construct__H2ZdZd_PX01RCX11_v
O push_back__t6vector2ZdZt24__default_alloc_template2b1i0RCd
O __t6vector2ZdZt24__default_alloc_template2b1i0
O __Q2t24__default_alloc_template2b1i0_4lock
O _t24__default_alloc_template2b1i0.__node_allocator_lock
O _._Q2t24__default_alloc_template2b1i0_4lock
O FREELIST_INDEX__t24__default_alloc_template2b1i0Ui
O _t24__default_alloc_template2b1i0.free_list
O deallocate__t23__malloc_alloc_template1i0PvUi
O deallocate__t24__default_alloc_template2b1i0PvUi
O deallocate__t12simple_alloc2ZdZt24__default_alloc_template2b1i0PdUi
O deallocate__t6vector2ZdZt24__default_alloc_template2b1i0
O __destroy_aux__H1ZPd_X01T0G11__true_type_v
O __destroy__H2ZPdZd_X01T0PX11_v
O value_type__H1ZPd_RCX01_PQ2t15iterator_traits1ZX0110value_type
O destroy__H1ZPd_X01T0_v
O _._t6vector2ZdZt24__default_alloc_template2b1i0
O lexicographical_compare_3way__H2ZPCScZPCSc_X01T0X11T2_i
O min__H1Zi_RCX01T0_RCX01
O lexicographical_compare__H2ZPCScZPCSc_X01T0X11T2_b
O min__H1ZUi_RCX01T0_RCX01


Anybody has any idea what is going on ?
Checked with recent cvs source (two days ago), on both i686-linux and
sparc-solaris, both built with gnu-ld/gnu-as, --enable-shared and
--enable-haifa.

I'm available for further information...


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]