]> granicus.if.org Git - clang/commit
[MS ABI] Correctly make paths through covariant virtual bases
authorDavid Majnemer <david.majnemer@gmail.com>
Thu, 30 Apr 2015 17:15:48 +0000 (17:15 +0000)
committerDavid Majnemer <david.majnemer@gmail.com>
Thu, 30 Apr 2015 17:15:48 +0000 (17:15 +0000)
commit46e27226b78f5fe9beb9690e04f6a1c100c513ab
tree6df1d28b25cdccc102c3f0cf4d10702ced385713
parentb2381f3017382952c8b611e580d2a804d1212c9c
[MS ABI] Correctly make paths through covariant virtual bases

There can be multiple virtual bases which are on the path to a vfptr
when one vbase virtually inherits from another.  We should prefer the
most derived virtual base which covariantly overrides a method in the
vfptr class;  if we do not lengthen the path this way, we will end up
with too few vftable entries.

This fixes PR21073.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@236239 91177308-0d34-0410-b5e6-96231b3b80d8
lib/AST/VTableBuilder.cpp
test/CodeGenCXX/microsoft-abi-vtables-return-thunks.cpp
test/CodeGenCXX/microsoft-abi-vtables-virtual-inheritance.cpp