]> granicus.if.org Git - clang/commitdiff
Followup to r183931 to fix the lambda conversion-to-block-pointer member.
authorEli Friedman <eli.friedman@gmail.com>
Thu, 13 Jun 2013 20:56:27 +0000 (20:56 +0000)
committerEli Friedman <eli.friedman@gmail.com>
Thu, 13 Jun 2013 20:56:27 +0000 (20:56 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@183942 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Sema/SemaLambda.cpp
test/CodeGenObjCXX/lambda-expressions.mm

index 469756cf4d9aa294326f7aed7da1168fa036af36..d8e90e5cb58ddad2758138c8d4418b5143105c4c 100644 (file)
@@ -900,7 +900,7 @@ static void addBlockPointerConversion(Sema &S,
                                 DeclarationNameInfo(Name, Loc, NameLoc),
                                 ConvTy, 
                                 S.Context.getTrivialTypeSourceInfo(ConvTy, Loc),
-                                /*isInline=*/false, /*isExplicit=*/false,
+                                /*isInline=*/true, /*isExplicit=*/false,
                                 /*isConstexpr=*/false, 
                                 CallOperator->getBody()->getLocEnd());
   Conversion->setAccess(AS_public);
index c73e1727d6377575680c8fc93cd880d0c3c7e875..acb8efb4b595906c7dead7e5cfb1e17286320901 100644 (file)
@@ -60,6 +60,15 @@ void take_block(void (^block)()) { block(); }
 }
 @end
 
-// ARC: attributes [[NUW]] = { nounwind{{.*}} }
+typedef int (^fptr)();
+template<typename T> struct StaticMembers {
+  static fptr f;
+};
+template<typename T>
+fptr StaticMembers<T>::f = [] { auto f = []{return 5;}; return fptr(f); }();
+template fptr StaticMembers<float>::f;
+// ARC: define linkonce_odr i32 ()* @_ZZNK13StaticMembersIfE1fMUlvE_clEvENKUlvE_cvU13block_pointerFivEEv
+
 
+// ARC: attributes [[NUW]] = { nounwind{{.*}} }
 // MRC: attributes [[NUW]] = { nounwind{{.*}} }