From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 20378 invoked by alias); 14 Nov 2002 22:16:03 -0000 Mailing-List: contact gcc-prs-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Archive: List-Post: List-Help: Sender: gcc-prs-owner@gcc.gnu.org Received: (qmail 20356 invoked by uid 71); 14 Nov 2002 22:16:03 -0000 Date: Thu, 21 Nov 2002 03:47:00 -0000 Message-ID: <20021114221603.20355.qmail@sources.redhat.com> To: bkoz@gcc.gnu.org Cc: gcc-prs@gcc.gnu.org, From: Matt Austern Subject: Re: libstdc++/8230: Buggy allocator behaviour Reply-To: Matt Austern X-SW-Source: 2002-11/txt/msg00738.txt.bz2 List-Id: The following reply was made to PR libstdc++/8230; it has been noted by GNATS. From: Matt Austern To: Gabriel Dos Reis Cc: Benjamin Kosnik , bkoz@gcc.gnu.org, gcc-bugs@gcc.gnu.org, jkanze@caicheuvreux.com, gcc-gnats@gcc.gnu.org, libstdc++@gcc.gnu.org Subject: Re: libstdc++/8230: Buggy allocator behaviour Date: Thu, 14 Nov 2002 14:10:55 -0800 On Thursday, November 14, 2002, at 12:39 PM, Gabriel Dos Reis wrote: > Benjamin Kosnik writes: > > | See attached patch for a way to fix this with the pool allocators. > > I agree with your patch. > > The following comment is for possible improvements. What about using > > if (__builtin_expect(__ret == 0, 0)) > __throw_bad_alloc("allocate::allocate"); > > ? > That gives a hint to the compiler that the branch is expected to be > taken very unfrequently, and it should make scheduling accordingly. > > In general, I would like to see us starting using use > __builtin_expect() > at places where we do checks for limits cases. Thoughts? Two questions. First, is it known how much of a speedup this gives on typical platforms? Second, if the answer to question 1 is "a lot": is there some sensible way to use this in the compiler itself? I suppose it'd have to involve some ghastly macro hackery because of the bootstrap problem, but it we're talking big performance wins, it might be worth it. --Matt