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]
Other format: [Raw text]

[Bug other/32508] New: g++ emits concept checks instantiations (code size blows up).


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


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