diff options
| author | David Majnemer <david.majnemer@gmail.com> | 2016-06-30 03:02:03 +0000 |
|---|---|---|
| committer | David Majnemer <david.majnemer@gmail.com> | 2016-06-30 03:02:03 +0000 |
| commit | 02d57cc92cb82d1bc48273ceafa4c173f8917e81 (patch) | |
| tree | b6e565d5c74f8450c6e98c7d1e7f745392c97544 /clang/lib/Sema/SemaOverload.cpp | |
| parent | b4b671e4a801d81f5899b73690349ebd69605818 (diff) | |
| download | bcm5719-llvm-02d57cc92cb82d1bc48273ceafa4c173f8917e81.tar.gz bcm5719-llvm-02d57cc92cb82d1bc48273ceafa4c173f8917e81.zip | |
[MS ABI] Pick an inheritance model if we resolve an overload set
We didn't assign an inheritance model for 'Foo' if the event an
exrepssion like '&Foo::Bar' occured if 'Bar' could resolve to multiple
functions.
Once the overload set is resolved to a particular member, we enforce a
specific inheritance model.
This fixes PR28360.
llvm-svn: 274202
Diffstat (limited to 'clang/lib/Sema/SemaOverload.cpp')
| -rw-r--r-- | clang/lib/Sema/SemaOverload.cpp | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/clang/lib/Sema/SemaOverload.cpp b/clang/lib/Sema/SemaOverload.cpp index a9a78244baf..038be79309f 100644 --- a/clang/lib/Sema/SemaOverload.cpp +++ b/clang/lib/Sema/SemaOverload.cpp @@ -13021,6 +13021,9 @@ Expr *Sema::FixOverloadedFunctionReference(Expr *E, DeclAccessPair Found, = Context.getTypeDeclType(cast<RecordDecl>(Method->getDeclContext())); QualType MemPtrType = Context.getMemberPointerType(Fn->getType(), ClassType.getTypePtr()); + // Under the MS ABI, lock down the inheritance model now. + if (Context.getTargetInfo().getCXXABI().isMicrosoft()) + (void)isCompleteType(UnOp->getOperatorLoc(), MemPtrType); return new (Context) UnaryOperator(SubExpr, UO_AddrOf, MemPtrType, VK_RValue, OK_Ordinary, |

