summaryrefslogtreecommitdiffstats
path: root/clang
diff options
context:
space:
mode:
authorEli Friedman <eli.friedman@gmail.com>2013-06-13 19:39:48 +0000
committerEli Friedman <eli.friedman@gmail.com>2013-06-13 19:39:48 +0000
commit8f54e136f44145c2f8541e481ad226ab3b52992e (patch)
tree39b7f1d58269db5cc035e524acba90fa1f0d8e70 /clang
parent0725a7d9729b821b0184c237d12d507996d9a008 (diff)
downloadbcm5719-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.cpp2
-rw-r--r--clang/test/CodeGenCXX/mangle-lambdas.cpp11
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
OpenPOWER on IntegriCloud