Reverting r233023 -- it caused test failures on Windows with MSVC x86.

http://bb.pgr.jp/builders/ninja-clang-i686-msc18-R/builds/572

llvm-svn: 233082
This commit is contained in:
Aaron Ballman 2015-03-24 13:51:13 +00:00
parent 8fab26263e
commit 368701a0c8
3 changed files with 8 additions and 28 deletions

View File

@ -2483,10 +2483,6 @@ getCCForDeclaratorChunk(Sema &S, Declarator &D,
// in a member pointer. // in a member pointer.
IsCXXInstanceMethod = IsCXXInstanceMethod =
D.getTypeObject(I).Kind == DeclaratorChunk::MemberPointer; D.getTypeObject(I).Kind == DeclaratorChunk::MemberPointer;
} else if (D.getContext() == Declarator::LambdaExprContext) {
// This can only be a call operator for a lambda, which is an instance
// method.
IsCXXInstanceMethod = true;
} else { } else {
// We're the innermost decl chunk, so must be a function declarator. // We're the innermost decl chunk, so must be a function declarator.
assert(D.isFunctionDeclarator()); assert(D.isFunctionDeclarator());

View File

@ -35,10 +35,10 @@ auto TemplateFuncionWithLocalLambda(T) {
return LocalLambdaWithLocalType(); return LocalLambdaWithLocalType();
} }
// MSVC2013-DAG: "\01?ValueFromTemplateFuncionWithLocalLambda@@3ULocalType@?2???R<lambda_1>@??$TemplateFuncionWithLocalLambda@H@@YA?A?<auto>@@H@Z@QBE?A?3@XZ@A" // MSVC2013-DAG: "\01?ValueFromTemplateFuncionWithLocalLambda@@3ULocalType@?2???R<lambda_1>@??$TemplateFuncionWithLocalLambda@H@@YA?A?<auto>@@H@Z@QBA?A?3@XZ@A"
// MSVC2013-DAG: "\01?ValueFromTemplateFuncionWithLocalLambda@@3ULocalType@?2???R<lambda_1>@??$TemplateFuncionWithLocalLambda@H@@YA?A?<auto>@@H@Z@QBE?A?3@XZ@A" // MSVC2013-DAG: "\01?ValueFromTemplateFuncionWithLocalLambda@@3ULocalType@?2???R<lambda_1>@??$TemplateFuncionWithLocalLambda@H@@YA?A?<auto>@@H@Z@QBA?A?3@XZ@A"
// MSVC2015-DAG: "\01?ValueFromTemplateFuncionWithLocalLambda@@3ULocalType@?1???R<lambda_1>@??$TemplateFuncionWithLocalLambda@H@@YA?A?<auto>@@H@Z@QBE?A?3@XZ@A" // MSVC2015-DAG: "\01?ValueFromTemplateFuncionWithLocalLambda@@3ULocalType@?1???R<lambda_1>@??$TemplateFuncionWithLocalLambda@H@@YA?A?<auto>@@H@Z@QBA?A?3@XZ@A"
// MSVC2015-DAG: "\01?ValueFromTemplateFuncionWithLocalLambda@@3ULocalType@?1???R<lambda_1>@??$TemplateFuncionWithLocalLambda@H@@YA?A?<auto>@@H@Z@QBE?A?3@XZ@A" // MSVC2015-DAG: "\01?ValueFromTemplateFuncionWithLocalLambda@@3ULocalType@?1???R<lambda_1>@??$TemplateFuncionWithLocalLambda@H@@YA?A?<auto>@@H@Z@QBA?A?3@XZ@A"
// CHECK: "\01??$TemplateFuncionWithLocalLambda@H@@YA?A?<auto>@@H@Z" // CHECK: "\01??$TemplateFuncionWithLocalLambda@H@@YA?A?<auto>@@H@Z"
// CHECK: "\01??R<lambda_1>@??$TemplateFuncionWithLocalLambda@H@@YA?A?<auto>@@H@Z@QBE?A?1@XZ" // CHECK: "\01??R<lambda_1>@??$TemplateFuncionWithLocalLambda@H@@YA?A?<auto>@@H@Z@QBA?A?1@XZ"
auto ValueFromTemplateFuncionWithLocalLambda = TemplateFuncionWithLocalLambda(0); auto ValueFromTemplateFuncionWithLocalLambda = TemplateFuncionWithLocalLambda(0);

View File

@ -1,6 +1,6 @@
// RUN: %clang_cc1 -std=c++14 -triple i686-pc-win32 -fms-extensions -verify %s // RUN: %clang_cc1 -triple i686-pc-win32 -fms-extensions -verify %s
// RUN: %clang_cc1 -std=c++14 -triple i686-pc-mingw32 -verify %s // RUN: %clang_cc1 -triple i686-pc-mingw32 -verify %s
// RUN: %clang_cc1 -std=c++14 -triple i686-pc-mingw32 -fms-extensions -verify %s // RUN: %clang_cc1 -triple i686-pc-mingw32 -fms-extensions -verify %s
typedef void void_fun_t(); typedef void void_fun_t();
typedef void __cdecl cdecl_fun_t(); typedef void __cdecl cdecl_fun_t();
@ -242,19 +242,3 @@ namespace test8 {
s.f(p); // expected-note {{in instantiation of member function 'test8::S<void *>::f' requested here}} s.f(p); // expected-note {{in instantiation of member function 'test8::S<void *>::f' requested here}}
} }
} }
namespace test9 {
// Used to fail when we forgot to make lambda call operators use __thiscall.
template <typename F>
decltype(auto) deduce(F f) {
return &decltype(f)::operator();
}
template <typename C, typename R, typename A>
decltype(auto) signaturehelper(R (C::*f)(A) const) {
return R();
}
void f() {
auto l = [](int x) { return x * 2; };
decltype(signaturehelper(deduce(l))) p;
}
}