diff options
author | Richard Smith <richard-llvm@metafoo.co.uk> | 2016-10-28 20:20:58 +0000 |
---|---|---|
committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2016-10-28 20:20:58 +0000 |
commit | c57ace48d79470adc64e1dfd0c50a86148da3a6a (patch) | |
tree | 7292e3fd56233e5bad20718fa1004bcf6487586e /include/clang/AST/DeclCXX.h | |
parent | f26f54c993c322b8ab5ff7c104e2a30c426dbb2b (diff) |
Fix handling of constructor inherited through multiple levels of virtual base class.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@285446 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/clang/AST/DeclCXX.h')
-rw-r--r-- | include/clang/AST/DeclCXX.h | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/include/clang/AST/DeclCXX.h b/include/clang/AST/DeclCXX.h index f2b798b5a3..357e075786 100644 --- a/include/clang/AST/DeclCXX.h +++ b/include/clang/AST/DeclCXX.h @@ -2957,11 +2957,10 @@ class ConstructorUsingShadowDecl final : public UsingShadowDecl { dyn_cast<ConstructorUsingShadowDecl>(Target)), ConstructedBaseClassShadowDecl(NominatedBaseClassShadowDecl), IsVirtual(TargetInVirtualBase) { - // If we found a constructor for a non-virtual base class, but it chains to - // a constructor for a virtual base, we should directly call the virtual - // base constructor instead. + // If we found a constructor that chains to a constructor for a virtual + // base, we should directly call that virtual base constructor instead. // FIXME: This logic belongs in Sema. - if (!TargetInVirtualBase && NominatedBaseClassShadowDecl && + if (NominatedBaseClassShadowDecl && NominatedBaseClassShadowDecl->constructsVirtualBase()) { ConstructedBaseClassShadowDecl = NominatedBaseClassShadowDecl->ConstructedBaseClassShadowDecl; |