[MS ABI] Fix a crash in vptr path calculation
authorDavid Majnemer <david.majnemer@gmail.com>
Mon, 4 May 2015 18:47:54 +0000 (18:47 +0000)
committerDavid Majnemer <david.majnemer@gmail.com>
Mon, 4 May 2015 18:47:54 +0000 (18:47 +0000)
commitab1309252cd8dc0bded3b2292a7ccdeb676fb9d4
tree58e52cb1293dd08c87ab2aa02bfaeae6ed8d0920
parentc9c55a26bd7fe1962ea1529ee0d0ccd0ea9f90da
[MS ABI] Fix a crash in vptr path calculation

I discovered a case where the old algorithm would crash.  Instead of
trying to patch the algorithm, rewrite it.  The new algorithm operates
in three phases:
1. Find all paths to the subobject with the vptr.
2. Remove paths which are subsets of other paths.
3. Select the best path where 'best' is defined as introducing the most
   covariant overriders.  If two paths introduce different overriders,
   raise a diagnostic.

llvm-svn: 236444
clang/lib/AST/VTableBuilder.cpp
clang/test/CodeGenCXX/microsoft-abi-vtables-return-thunks.cpp
clang/test/CodeGenCXX/microsoft-abi-vtables-virtual-inheritance.cpp