diff options
| author | Eli Friedman <eli.friedman@gmail.com> | 2013-06-13 19:39:48 +0000 |
|---|---|---|
| committer | Eli Friedman <eli.friedman@gmail.com> | 2013-06-13 19:39:48 +0000 |
| commit | 8f54e136f44145c2f8541e481ad226ab3b52992e (patch) | |
| tree | 39b7f1d58269db5cc035e524acba90fa1f0d8e70 /clang | |
| parent | 0725a7d9729b821b0184c237d12d507996d9a008 (diff) | |
| download | bcm5719-llvm-8f54e136f44145c2f8541e481ad226ab3b52992e.tar.gz bcm5719-llvm-8f54e136f44145c2f8541e481ad226ab3b52992e.zip | |
Fix a small bug in the linkage computation for the lambda conversion-to-function-pointer member.
llvm-svn: 183931
Diffstat (limited to 'clang')
| -rw-r--r-- | clang/lib/Sema/SemaLambda.cpp | 2 | ||||
| -rw-r--r-- | clang/test/CodeGenCXX/mangle-lambdas.cpp | 11 |
2 files changed, 11 insertions, 2 deletions
diff --git a/clang/lib/Sema/SemaLambda.cpp b/clang/lib/Sema/SemaLambda.cpp index f28ea0a0953..469756cf4d9 100644 --- a/clang/lib/Sema/SemaLambda.cpp +++ b/clang/lib/Sema/SemaLambda.cpp @@ -834,7 +834,7 @@ static void addFunctionPointerConversion(Sema &S, ConvTy, S.Context.getTrivialTypeSourceInfo(ConvTy, Loc), - /*isInline=*/false, /*isExplicit=*/false, + /*isInline=*/true, /*isExplicit=*/false, /*isConstexpr=*/false, CallOperator->getBody()->getLocEnd()); Conversion->setAccess(AS_public); diff --git a/clang/test/CodeGenCXX/mangle-lambdas.cpp b/clang/test/CodeGenCXX/mangle-lambdas.cpp index 0bd5ad2a02c..a9c3ace8a63 100644 --- a/clang/test/CodeGenCXX/mangle-lambdas.cpp +++ b/clang/test/CodeGenCXX/mangle-lambdas.cpp @@ -106,6 +106,7 @@ struct StaticMembers { static T x; static T y; static T z; + static int (*f)(); }; template<typename T> int accept_lambda(T); @@ -119,6 +120,9 @@ T StaticMembers<T>::y = []{return 3;}(); template<typename T> T StaticMembers<T>::z = accept_lambda([]{return 4;}); +template<typename T> +int (*StaticMembers<T>::f)() = []{return 5;}; + // CHECK: define internal void @__cxx_global_var_init() // CHECK: call i32 @_ZNK13StaticMembersIfE1xMUlvE_clEv // CHECK-NEXT: call i32 @_ZNK13StaticMembersIfE1xMUlvE0_clEv @@ -140,7 +144,12 @@ template float StaticMembers<float>::y; // CHECK: declare i32 @_Z13accept_lambdaIN13StaticMembersIfE1zMUlvE_EEiT_() template float StaticMembers<float>::z; -// CHECK: define internal void @__cxx_global_var_init3 +// CHECK: define internal void @__cxx_global_var_init3() +// CHECK: call {{.*}} @_ZNK13StaticMembersIfE1fMUlvE_cvPFivEEv +// CHECK: define linkonce_odr i32 ()* @_ZNK13StaticMembersIfE1fMUlvE_cvPFivEEv +template int (*StaticMembers<float>::f)(); + +// CHECK: define internal void @__cxx_global_var_init4 // CHECK: call i32 @"_ZNK13StaticMembersIdE3$_2clEv" // CHECK: define internal i32 @"_ZNK13StaticMembersIdE3$_2clEv" // CHECK: ret i32 42 |

