This is the mail archive of the
libstdc++@gcc.gnu.org
mailing list for the libstdc++ project.
Re: libstdc++/8230: Buggy allocator behaviour
- From: Matt Austern <austern at apple dot com>
- To: Gabriel Dos Reis <gdr at integrable-solutions dot net>
- Cc: Benjamin Kosnik <bkoz at redhat dot com>, bkoz at gcc dot gnu dot org, gcc-bugs at gcc dot gnu dot org, jkanze at caicheuvreux dot com, gcc-gnats at gcc dot gnu dot org, libstdc++ at gcc dot gnu dot org
- Date: Thu, 14 Nov 2002 14:10:55 -0800
- Subject: Re: libstdc++/8230: Buggy allocator behaviour
On Thursday, November 14, 2002, at 12:39 PM, Gabriel Dos Reis wrote:
Benjamin Kosnik <bkoz@redhat.com> 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