This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug other/32508] New: g++ emits concept checks instantiations (code size blows up).
- From: "pluto at agmk dot net" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 25 Jun 2007 21:54:07 -0000
- Subject: [Bug other/32508] New: g++ emits concept checks instantiations (code size blows up).
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
according to documentation of libstdc++:
"--enable-concept-checks
This turns on additional compile-time checks for instantiated library
templates, in the form of specialized templates, described here.
They can help users discover when they break the rules of the STL,
before their programs run."
in fact, gcc 4.1.x emits concept checks instatiations and drastically
increase code size. gcc 4.2 works fine.
testcase:
#include <vector>
struct X { };
std::vector< X > foo()
{
std::vector< X > v;
v.resize( 8 );
return v;
}
$ g++41 concepts.cpp -o concepts-41.so -shared -O2 -fpic -s
$ readelf -sW concepts-41.so|grep Concept|c++filt
6: 00000000000014b0 31 FUNC WEAK DEFAULT 10
__gnu_cxx::_LessThanComparableConcept<unsigned long>::__constraints()
11: 00000000000015d0 2 FUNC WEAK DEFAULT 10
__gnu_cxx::_DefaultConstructibleConcept<__gnu_cxx::__normal_iterator<X*,
std::vector<X, std::allocator<X> > > >::__constraints()
12: 0000000000001570 5 FUNC WEAK DEFAULT 10
__gnu_cxx::_BidirectionalIteratorConcept<__gnu_cxx::__normal_iterator<X*,
std::vector<X, std::allocator<X> > > >::__constraints()
14: 0000000000001600 2 FUNC WEAK DEFAULT 10
__gnu_cxx::_TrivialIteratorConcept<__gnu_cxx::__normal_iterator<X*,
std::vector<X, std::allocator<X> > > >::__constraints()
15: 00000000000015f0 5 FUNC WEAK DEFAULT 10
__gnu_cxx::_OutputIteratorConcept<__gnu_cxx::__normal_iterator<X*,
std::vector<X, std::allocator<X> > >, X>::__constraints()
16: 00000000000014e0 2 FUNC WEAK DEFAULT 10
__gnu_cxx::_ConvertibleConcept<std::random_access_iterator_tag,
std::input_iterator_tag>::__constraints()
17: 00000000000015c0 2 FUNC WEAK DEFAULT 10
__gnu_cxx::_ConvertibleConcept<std::random_access_iterator_tag,
std::forward_iterator_tag>::__constraints()
19: 00000000000015a0 31 FUNC WEAK DEFAULT 10
__gnu_cxx::_EqualityComparableConcept<__gnu_cxx::__normal_iterator<X*,
std::vector<X, std::allocator<X> > > >::__constraints()
20: 0000000000001580 2 FUNC WEAK DEFAULT 10
__gnu_cxx::_AssignableConcept<__gnu_cxx::__normal_iterator<X*, std::vector<X,
std::allocator<X> > > >::__constraints()
21: 0000000000001500 2 FUNC WEAK DEFAULT 10
__gnu_cxx::_ConvertibleConcept<X, X>::__constraints()
24: 00000000000014f0 5 FUNC WEAK DEFAULT 10
__gnu_cxx::_InputIteratorConcept<__gnu_cxx::__normal_iterator<X*,
std::vector<X, std::allocator<X> > > >::__constraints()
26: 0000000000001590 2 FUNC WEAK DEFAULT 10
__gnu_cxx::_ConvertibleConcept<std::random_access_iterator_tag,
std::bidirectional_iterator_tag>::__constraints()
31: 0000000000001620 4 FUNC WEAK DEFAULT 10
__gnu_cxx::_Mutable_BidirectionalIteratorConcept<__gnu_cxx::__normal_iterator<X*,
std::vector<X, std::allocator<X> > > >::__constraints()
33: 0000000000001610 4 FUNC WEAK DEFAULT 10
__gnu_cxx::_Mutable_ForwardIteratorConcept<__gnu_cxx::__normal_iterator<X*,
std::vector<X, std::allocator<X> > > >::__constraints()
37: 00000000000015e0 2 FUNC WEAK DEFAULT 10
__gnu_cxx::_ForwardIteratorConcept<__gnu_cxx::__normal_iterator<X*,
std::vector<X, std::allocator<X> > > >::__constraints()
--
Summary: g++ emits concept checks instantiations (code size blows
up).
Product: gcc
Version: 4.1.2
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: other
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: pluto at agmk dot net
GCC target triplet: x86_64-linux
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=32508