summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaTemplate.cpp
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2013-12-10 00:59:31 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2013-12-10 00:59:31 +0000
commit66747221e8749a0f228bd47f43fb43bdb749e81a (patch)
tree91e41b7583ad5b8c44ce7ac0541defc97191213e /clang/lib/Sema/SemaTemplate.cpp
parent1a74b6e11869fe221b7451b2db857472c35f14a6 (diff)
downloadbcm5719-llvm-66747221e8749a0f228bd47f43fb43bdb749e81a.tar.gz
bcm5719-llvm-66747221e8749a0f228bd47f43fb43bdb749e81a.zip
Take into consideration calling convention when processing specializations.
This fixes pr18141. llvm-svn: 196855
Diffstat (limited to 'clang/lib/Sema/SemaTemplate.cpp')
-rw-r--r--clang/lib/Sema/SemaTemplate.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/clang/lib/Sema/SemaTemplate.cpp b/clang/lib/Sema/SemaTemplate.cpp
index 20a3d283314..b134f6ea510 100644
--- a/clang/lib/Sema/SemaTemplate.cpp
+++ b/clang/lib/Sema/SemaTemplate.cpp
@@ -6654,7 +6654,10 @@ Sema::CheckMemberSpecialization(NamedDecl *Member, LookupResult &Previous) {
I != E; ++I) {
NamedDecl *D = (*I)->getUnderlyingDecl();
if (CXXMethodDecl *Method = dyn_cast<CXXMethodDecl>(D)) {
- if (Context.hasSameType(Function->getType(), Method->getType())) {
+ QualType Adjusted = Function->getType();
+ if (!hasExplicitCallingConv(Adjusted))
+ Adjusted = adjustCCAndNoReturn(Adjusted, Method->getType());
+ if (Context.hasSameType(Adjusted, Method->getType())) {
Instantiation = Method;
InstantiatedFrom = Method->getInstantiatedFromMemberFunction();
MSInfo = Method->getMemberSpecializationInfo();
OpenPOWER on IntegriCloud