Return-Path: Delivered-To: apmail-incubator-stdcxx-dev-archive@www.apache.org Received: (qmail 15922 invoked from network); 15 May 2007 21:55:37 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 15 May 2007 21:55:37 -0000 Received: (qmail 4127 invoked by uid 500); 15 May 2007 21:55:43 -0000 Delivered-To: apmail-incubator-stdcxx-dev-archive@incubator.apache.org Received: (qmail 4108 invoked by uid 500); 15 May 2007 21:55:43 -0000 Mailing-List: contact stdcxx-dev-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: stdcxx-dev@incubator.apache.org Delivered-To: mailing list stdcxx-dev@incubator.apache.org Received: (qmail 4097 invoked by uid 99); 15 May 2007 21:55:43 -0000 Received: from herse.apache.org (HELO herse.apache.org) (140.211.11.133) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 15 May 2007 14:55:43 -0700 X-ASF-Spam-Status: No, hits=-100.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO brutus.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 15 May 2007 14:55:36 -0700 Received: from brutus (localhost [127.0.0.1]) by brutus.apache.org (Postfix) with ESMTP id 26D6B714043 for ; Tue, 15 May 2007 14:55:16 -0700 (PDT) Message-ID: <24140489.1179266116140.JavaMail.jira@brutus> Date: Tue, 15 May 2007 14:55:16 -0700 (PDT) From: "Martin Sebor (JIRA)" To: stdcxx-dev@incubator.apache.org Subject: [jira] Commented: (STDCXX-416) std::logic_error::~logic_error() too big to be inlined in exception.cpp In-Reply-To: <1753158.1179259396155.JavaMail.jira@brutus> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Virus-Checked: Checked by ClamAV on apache.org [ https://issues.apache.org/jira/browse/STDCXX-416?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12496150 ] Martin Sebor commented on STDCXX-416: ------------------------------------- Outlining the virtual dtor in a separate translation unit will not only silence the warnings but it will also help reduce the size of translation units where the class is used: $ # before outlining logic_error::~logic_error(): $ make t.o && ls -l t.o && nm t.o | c++filt gcc -c -I/amd/devco/sebor/stdcxx-trunk/include/ansi -pthread -I/amd/devco/sebor/stdcxx-trunk/include -I/build/sebor/stdcxx-gcc-3.3.3_43.31-12d-2/include -I/amd/devco/sebor/stdcxx-trunk/examples/include -pedantic -nostdinc++ -O2 -W -Wall -Wcast-qual -Winline -Wshadow -Wwrite-strings -Wno-long-long -Wcast-align t.cpp -rw-r--r-- 1 sebor devel 2644 May 15 13:03 t.o 00000000 T foo(int) U __rw::__rw_exception::__rw_exception(char const*) U __rw::__rw_exception::~__rw_exception() U __rw::__rw_exception::what() const 00000000 W std::logic_error::~logic_error() 00000000 W std::logic_error::~logic_error() U typeinfo for __rw::__rw_exception 00000000 V typeinfo for std::logic_error 00000000 V typeinfo name for std::logic_error U vtable for __cxxabiv1::__si_class_type_info 00000000 V vtable for std::logic_error U operator delete(void*) U __cxa_allocate_exception U __cxa_throw U __gxx_personality_v0 $ # after outlining logic_error::~logic_error(): $ make t.o && ls -l t.o && nm t.o | c++filt gcc -c -I/amd/devco/sebor/stdcxx/include/ansi -pthread -I/amd/devco/sebor/stdcxx/include -I/build/sebor/stdcxx-gcc-3.3.3_43.31-12d/include -I/amd/devco/sebor/stdcxx/examples/include -pedantic -nostdinc++ -O2 -W -Wall -Wcast-qual -Winline -Wshadow -Wwrite-strings -Wno-long-long -Wcast-align t.cpp -rw-r--r-- 1 sebor devel 1476 2007-05-15 14:52 t.o U __cxa_allocate_exception U __cxa_throw U __gxx_personality_v0 00000000 T foo(int) U __rw::__rw_exception::__rw_exception(char const*) U std::logic_error::~logic_error() U typeinfo for std::logic_error U vtable for std::logic_error > std::logic_error::~logic_error() too big to be inlined in exception.cpp > ----------------------------------------------------------------------- > > Key: STDCXX-416 > URL: https://issues.apache.org/jira/browse/STDCXX-416 > Project: C++ Standard Library > Issue Type: Bug > Components: 19. Diagnostics > Affects Versions: 4.1.3 > Environment: gcc 3.3.3 (SuSE Linux) > Reporter: Martin Sebor > Priority: Minor > > We're getting tons of warnings while optimizing the library (exception.cpp) with gcc 3.3.3 for logic_error dtor being too big to be inlined (see below). > gcc -c -I$(TOPDIR)/include/ansi -pthread -I$(TOPDIR)/include -I$(BUILDDIR)/include -pedantic -nostdinc++ -O2 -W -Wall -Wcast-qual -Winline -Wshadow -Wwrite-strings -Wno-long-long -Wcast-align -fPIC $(TOPDIR)/src/exception.cpp > $(TOPDIR)/include/string: In member function `virtual std::out_of_range::~out_of_range()': > $(TOPDIR)/include/stdexcept:54: warning: inlining failed in call to `std::logic_error::~logic_error()' : --param large-function-growth limit reached while inlining the caller > $(TOPDIR)/include/string:689: warning: called from here > $(TOPDIR)/include/stdexcept:54: warning: inlining failed in call to `std::logic_error::~logic_error()' : --param large-function-growth limit reached while inlining the caller > $(TOPDIR)/src/exception.cpp:689: warning: called from here > $(TOPDIR)/include/string: In member function `virtual std::length_error::~length_error()': > $(TOPDIR)/include/stdexcept:54: warning: inlining failed in call to `std::logic_error::~logic_error()' : --param large-function-growth limit reached while inlining the caller > $(TOPDIR)/include/string:686: warning: called from here > $(TOPDIR)/include/stdexcept:54: warning: inlining failed in call to `std::logic_error::~logic_error()' : --param large-function-growth limit reached while inlining the caller > $(TOPDIR)/src/exception.cpp:686: warning: called from here > $(TOPDIR)/include/string: In function `void __rw::__rw_throw_exception(int, char*)': > $(TOPDIR)/include/stdexcept:54: warning: inlining failed in call to `std::logic_error::~logic_error()' : --param large-function-growth limit reached while inlining the caller > $(TOPDIR)/include/string:58: warning: called from here > $(TOPDIR)/include/stdexcept:54: warning: inlining failed in call to `std::logic_error::~logic_error()' : --param large-function-growth limit reached while inlining the caller > $(TOPDIR)/include/string:679: warning: called from here > $(TOPDIR)/include/stdexcept:54: warning: inlining failed in call to `std::logic_error::~logic_error()' : --param large-function-growth limit reached while inlining the caller > $(TOPDIR)/include/string:70: warning: called from here > $(TOPDIR)/include/stdexcept:54: warning: inlining failed in call to `std::logic_error::~logic_error()' : --param large-function-growth limit reached while inlining the caller > $(TOPDIR)/include/string:683: warning: called from here > $(TOPDIR)/include/stdexcept:54: warning: inlining failed in call to `std::logic_error::~logic_error()' : --param large-function-growth limit reached while inlining the caller > $(TOPDIR)/include/string:82: warning: called from here > $(TOPDIR)/include/stdexcept:54: warning: inlining failed in call to `std::logic_error::~logic_error()' : --param large-function-growth limit reached while inlining the caller > $(TOPDIR)/include/string:686: warning: called from here > $(TOPDIR)/include/stdexcept:54: warning: inlining failed in call to `std::logic_error::~logic_error()' : --param large-function-growth limit reached while inlining the caller > $(TOPDIR)/include/string:686: warning: called from here > $(TOPDIR)/include/stdexcept:54: warning: inlining failed in call to `std::logic_error::~logic_error()' : --param large-function-growth limit reached while inlining the caller > $(TOPDIR)/include/string:686: warning: called from here > $(TOPDIR)/include/stdexcept:54: warning: inlining failed in call to `std::logic_error::~logic_error()' : --param large-function-growth limit reached while inlining the caller > $(TOPDIR)/include/string:94: warning: called from here > $(TOPDIR)/include/stdexcept:54: warning: inlining failed in call to `std::logic_error::~logic_error()' : --param large-function-growth limit reached while inlining the caller > $(TOPDIR)/include/string:689: warning: called from here > $(TOPDIR)/include/stdexcept:54: warning: inlining failed in call to `std::logic_error::~logic_error()' : --param large-function-growth limit reached while inlining the caller > $(TOPDIR)/include/string:689: warning: called from here > $(TOPDIR)/include/stdexcept:54: warning: inlining failed in call to `std::logic_error::~logic_error()' : --param large-function-growth limit reached while inlining the caller > $(TOPDIR)/include/string:689: warning: called from here > In file included from $(TOPDIR)/src/exception.cpp:679: > $(TOPDIR)/include/stdexcept:54: warning: inlining failed in call to `std::logic_error::~logic_error()' : function not considered for inlining > $(TOPDIR)/include/stdexcept:58: warning: called from here > In file included from $(TOPDIR)/src/exception.cpp:679: > $(TOPDIR)/include/stdexcept:54: warning: inlining failed in call to `std::logic_error::~logic_error()' : function not considered for inlining > $(TOPDIR)/src/exception.cpp:679: warning: called from here > In file included from $(TOPDIR)/src/exception.cpp:682: > $(TOPDIR)/include/stdexcept:54: warning: inlining failed in call to `std::logic_error::~logic_error()' : function not considered for inlining > $(TOPDIR)/include/stdexcept:70: warning: called from here > In file included from $(TOPDIR)/src/exception.cpp:683: > $(TOPDIR)/include/stdexcept:54: warning: inlining failed in call to `std::logic_error::~logic_error()' : function not considered for inlining > $(TOPDIR)/src/exception.cpp:683: warning: called from here > In file included from $(TOPDIR)/src/exception.cpp:686: > $(TOPDIR)/include/stdexcept:54: warning: inlining failed in call to `std::logic_error::~logic_error()' : function not considered for inlining > $(TOPDIR)/include/stdexcept:82: warning: called from here > In file included from $(TOPDIR)/src/exception.cpp:686: > $(TOPDIR)/include/stdexcept:54: warning: inlining failed in call to `std::logic_error::~logic_error()' : function not considered for inlining > $(TOPDIR)/src/exception.cpp:686: warning: called from here > In file included from $(TOPDIR)/src/exception.cpp:686: > $(TOPDIR)/include/stdexcept:54: warning: inlining failed in call to `std::logic_error::~logic_error()' : function not considered for inlining > $(TOPDIR)/src/exception.cpp:686: warning: called from here > In file included from $(TOPDIR)/src/exception.cpp:686: > $(TOPDIR)/include/stdexcept:54: warning: inlining failed in call to `std::logic_error::~logic_error()' : function not considered for inlining > $(TOPDIR)/src/exception.cpp:686: warning: called from here > In file included from $(TOPDIR)/src/exception.cpp:689: > $(TOPDIR)/include/stdexcept:54: warning: inlining failed in call to `std::logic_error::~logic_error()' : function not considered for inlining > $(TOPDIR)/include/stdexcept:94: warning: called from here > In file included from $(TOPDIR)/src/exception.cpp:689: > $(TOPDIR)/include/stdexcept:54: warning: inlining failed in call to `std::logic_error::~logic_error()' : function not considered for inlining > $(TOPDIR)/src/exception.cpp:689: warning: called from here > In file included from $(TOPDIR)/src/exception.cpp:689: > $(TOPDIR)/include/stdexcept:54: warning: inlining failed in call to `std::logic_error::~logic_error()' : function not considered for inlining > $(TOPDIR)/src/exception.cpp:689: warning: called from here > In file included from $(TOPDIR)/src/exception.cpp:689: > $(TOPDIR)/include/stdexcept:54: warning: inlining failed in call to `std::logic_error::~logic_error()' : function not considered for inlining > $(TOPDIR)/src/exception.cpp:689: warning: called from here -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.