diff options
author | Richard Smith <richard@metafoo.co.uk> | 2020-01-31 17:05:27 -0800 |
---|---|---|
committer | Richard Smith <richard@metafoo.co.uk> | 2020-01-31 17:06:48 -0800 |
commit | aade5fbbfef3e8555df202082bea905deebc2ca5 (patch) | |
tree | 09129207ef4be5179bc2d4502088b4fbe5fdb781 /clang/lib/AST/CXXInheritance.cpp | |
parent | b074acb82f7e75a189fa7933b09627241b166121 (diff) | |
download | llvm-aade5fbbfef3e8555df202082bea905deebc2ca5.zip llvm-aade5fbbfef3e8555df202082bea905deebc2ca5.tar.gz llvm-aade5fbbfef3e8555df202082bea905deebc2ca5.tar.bz2 |
Fix wrong devirtualization when the final overrider in one base class
overrides the final overrider in a different base class.
Diffstat (limited to 'clang/lib/AST/CXXInheritance.cpp')
-rw-r--r-- | clang/lib/AST/CXXInheritance.cpp | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/clang/lib/AST/CXXInheritance.cpp b/clang/lib/AST/CXXInheritance.cpp index a3a3794..0377bd32 100644 --- a/clang/lib/AST/CXXInheritance.cpp +++ b/clang/lib/AST/CXXInheritance.cpp @@ -758,6 +758,8 @@ CXXRecordDecl::getFinalOverriders(CXXFinalOverriderMap &FinalOverriders) const { return false; }; + // FIXME: IsHidden reads from Overriding from the middle of a remove_if + // over the same sequence! Is this guaranteed to work? Overriding.erase( std::remove_if(Overriding.begin(), Overriding.end(), IsHidden), Overriding.end()); |