After this patch:
http://gcc.gnu.org/ml/gcc-patches/2006-04/msg00057.html
C++ dynamic cast code on x86-64 changes to
call __dynamic_cast
testb %al, %al
and stops working for some cases. The previous working version on x86-64 is
call __dynamic_cast
testq %rax, %rax
--
Summary: C++ dynamic cast is incorrect
Product: gcc
Version: 4.2.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: middle-end
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: hjl at lucon dot org
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27694