]> git.ipfire.org Git - people/ms/gcc.git/commit
libstdc++: small dynamic_cast optimization
authorJason Merrill <jason@redhat.com>
Tue, 6 Sep 2022 14:35:21 +0000 (10:35 -0400)
committerJason Merrill <jason@redhat.com>
Wed, 7 Sep 2022 14:11:54 +0000 (10:11 -0400)
commit873d395c2976a8321cec03f21d77e11f746da7c0
treeb4dd2843a060eeb0fdc2aea4c3cf5d24f9b27b32
parent0a91bdaf177409a2a5e7895bce4f0e7091b4b3ca
libstdc++: small dynamic_cast optimization

This change speeds up the simple benchmark below by about 40%.

struct A { virtual ~A() {} };
struct B: A { } b;
A* ap = &b;
void *sink;
int main()
{
  for (long i = 0; i < 4000000000L; ++i)
    sink = dynamic_cast<B*>(ap);
}

libstdc++-v3/ChangeLog:

* libsupc++/dyncast.cc (__dynamic_cast): Avoid virtual function
call in simple success case.
libstdc++-v3/libsupc++/dyncast.cc