aboutsummaryrefslogtreecommitdiff
path: root/test/CodeGenCXX/lambda-expressions.cpp
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2012-02-21 04:17:39 +0000
committerDouglas Gregor <dgregor@apple.com>2012-02-21 04:17:39 +0000
commit5878cbcfaa90b8515550db86033fd5a0efab971d (patch)
tree7cb574e300ff00ea50204363fbc09578a8f8f9f9 /test/CodeGenCXX/lambda-expressions.cpp
parent702afbc68b933af520420688cdf6783b411a8f70 (diff)
Implement non-internal linkage for lambda closure types that need a
stable mangling, since these lambdas can end up in multiple translation units. Sema is responsible for deciding when this is the case, because it's already responsible for choosing the mangling number. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@151029 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGenCXX/lambda-expressions.cpp')
-rw-r--r--test/CodeGenCXX/lambda-expressions.cpp32
1 files changed, 16 insertions, 16 deletions
diff --git a/test/CodeGenCXX/lambda-expressions.cpp b/test/CodeGenCXX/lambda-expressions.cpp
index 5a68e893d7..797cbf43a7 100644
--- a/test/CodeGenCXX/lambda-expressions.cpp
+++ b/test/CodeGenCXX/lambda-expressions.cpp
@@ -8,8 +8,8 @@ extern "C" auto cvar = []{};
int a() { return []{ return 1; }(); }
// CHECK: define i32 @_Z1av
-// CHECK: call i32 @_ZZ1avENKUlvE_clEv
-// CHECK: define internal i32 @_ZZ1avENKUlvE_clEv
+// CHECK: call i32 @"_ZZ1avENK3$_0clEv"
+// CHECK: define internal i32 @"_ZZ1avENK3$_0clEv"
// CHECK: ret i32 1
int b(int x) { return [x]{return x;}(); }
@@ -17,8 +17,8 @@ int b(int x) { return [x]{return x;}(); }
// CHECK: store i32
// CHECK: load i32*
// CHECK: store i32
-// CHECK: call i32 @_ZZ1biENKUlvE_clEv
-// CHECK: define internal i32 @_ZZ1biENKUlvE_clEv
+// CHECK: call i32 @"_ZZ1biENK3$_1clEv"
+// CHECK: define internal i32 @"_ZZ1biENK3$_1clEv"
// CHECK: load i32*
// CHECK: ret i32
@@ -26,8 +26,8 @@ int c(int x) { return [&x]{return x;}(); }
// CHECK: define i32 @_Z1ci
// CHECK: store i32
// CHECK: store i32*
-// CHECK: call i32 @_ZZ1ciENKUlvE_clEv
-// CHECK: define internal i32 @_ZZ1ciENKUlvE_clEv
+// CHECK: call i32 @"_ZZ1ciENK3$_2clEv"
+// CHECK: define internal i32 @"_ZZ1ciENK3$_2clEv"
// CHECK: load i32**
// CHECK: load i32*
// CHECK: ret i32
@@ -39,8 +39,8 @@ int d(int x) { D y[10]; [x,y] { return y[x].x; }(); }
// CHECK: call void @_ZN1DC1Ev
// CHECK: icmp ult i64 %{{.*}}, 10
// CHECK: call void @_ZN1DC1ERKS_
-// CHECK: call i32 @_ZZ1diENKUlvE_clEv
-// CHECK: define internal i32 @_ZZ1diENKUlvE_clEv
+// CHECK: call i32 @"_ZZ1diENK3$_3clEv"
+// CHECK: define internal i32 @"_ZZ1diENK3$_3clEv"
// CHECK: load i32*
// CHECK: load i32*
// CHECK: ret i32
@@ -50,29 +50,29 @@ int e(E a, E b, bool cond) { [a,b,cond](){ return (cond ? a : b).x; }(); }
// CHECK: define i32 @_Z1e1ES_b
// CHECK: call void @_ZN1EC1ERKS_
// CHECK: invoke void @_ZN1EC1ERKS_
-// CHECK: invoke i32 @_ZZ1e1ES_bENKUlvE_clEv
-// CHECK: call void @_ZZ1e1ES_bENUlvE_D1Ev
-// CHECK: call void @_ZZ1e1ES_bENUlvE_D1Ev
+// CHECK: invoke i32 @"_ZZ1e1ES_bENK3$_4clEv"
+// CHECK: call void @"_ZZ1e1ES_bEN3$_4D1Ev"
+// CHECK: call void @"_ZZ1e1ES_bEN3$_4D1Ev"
-// CHECK: define internal i32 @_ZZ1e1ES_bENKUlvE_clEv
+// CHECK: define internal i32 @"_ZZ1e1ES_bENK3$_4clEv"
// CHECK: trunc i8
// CHECK: load i32*
// CHECK: ret i32
void f() {
// CHECK: define void @_Z1fv()
- // CHECK: {{call.*@_ZZ1fvENKUliiE_cvPFiiiEEv}}
+ // CHECK: @"_ZZ1fvENK3$_5cvPFiiiEEv"
// CHECK-NEXT: store i32 (i32, i32)*
// CHECK-NEXT: ret void
int (*fp)(int, int) = [](int x, int y){ return x + y; };
}
-// CHECK: define internal i32 @_ZZ1fvENUliiE_8__invokeEii
+// CHECK: define internal i32 @"_ZZ1fvEN3$_58__invokeEii"
// CHECK: store i32
// CHECK-NEXT: store i32
// CHECK-NEXT: load i32*
// CHECK-NEXT: load i32*
-// CHECK-NEXT: call i32 @_ZZ1fvENKUliiE_clEii
+// CHECK-NEXT: call i32 @"_ZZ1fvENK3$_5clEii"
// CHECK-NEXT: ret i32
-// CHECK: define internal void @_ZZ1e1ES_bENUlvE_D2Ev
+// CHECK: define internal void @"_ZZ1e1ES_bEN3$_4D2Ev"