summaryrefslogtreecommitdiffstats
path: root/test/CodeGenCXX/cxx1y-init-captures.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'test/CodeGenCXX/cxx1y-init-captures.cpp')
-rw-r--r--test/CodeGenCXX/cxx1y-init-captures.cpp43
1 files changed, 22 insertions, 21 deletions
diff --git a/test/CodeGenCXX/cxx1y-init-captures.cpp b/test/CodeGenCXX/cxx1y-init-captures.cpp
index a60269f..dcfe4d4 100644
--- a/test/CodeGenCXX/cxx1y-init-captures.cpp
+++ b/test/CodeGenCXX/cxx1y-init-captures.cpp
@@ -32,9 +32,10 @@ void g() {
// CHECK-LABEL: define internal i32 @"_ZZ1gvENK3$_1clEv"(
// CHECK: getelementptr inbounds {{.*}}, i32 0, i32 0
-// CHECK: load i32*
+// CHECK: load i32, i32*
// CHECK: getelementptr inbounds {{.*}}, i32 0, i32 1
-// CHECK: load i32*
+// CHECK: load i32, i32*
+
// CHECK: add nsw i32
int h(int a) {
@@ -44,12 +45,12 @@ int h(int a) {
// CHECK: store i32 {{.*}}, i32* %[[A_ADDR]],
//
// Initialize init-capture 'b(a)' by reference.
- // CHECK: getelementptr inbounds {{.*}}* %[[OUTER]], i32 0, i32 0
+ // CHECK: getelementptr inbounds {{.*}}, {{.*}}* %[[OUTER]], i32 0, i32 0
// CHECK: store i32* %[[A_ADDR]], i32** {{.*}},
//
// Initialize init-capture 'c(a)' by copy.
- // CHECK: getelementptr inbounds {{.*}}* %[[OUTER]], i32 0, i32 1
- // CHECK: load i32* %[[A_ADDR]],
+ // CHECK: getelementptr inbounds {{.*}}, {{.*}}* %[[OUTER]], i32 0, i32 1
+ // CHECK: load i32, i32* %[[A_ADDR]],
// CHECK: store i32
//
// CHECK: call i32 @"_ZZ1hiENK3$_2clEv"({{.*}}* %[[OUTER]])
@@ -60,33 +61,36 @@ int h(int a) {
// CHECK: store {{.*}}, {{.*}}** %[[OUTER_ADDR]],
//
// Capture outer 'c' by reference.
- // CHECK: %[[OUTER:.*]] = load {{.*}}** %[[OUTER_ADDR]]
- // CHECK: getelementptr inbounds {{.*}}* %[[INNER]], i32 0, i32 0
- // CHECK-NEXT: getelementptr inbounds {{.*}}* %[[OUTER]], i32 0, i32 1
+ // CHECK: %[[OUTER:.*]] = load {{.*}}*, {{.*}}** %[[OUTER_ADDR]]
+ // CHECK: getelementptr inbounds {{.*}}, {{.*}}* %[[INNER]], i32 0, i32 0
+ // CHECK-NEXT: getelementptr inbounds {{.*}}, {{.*}}* %[[OUTER]], i32 0, i32 1
// CHECK-NEXT: store i32* %
//
// Capture outer 'b' by copy.
- // CHECK: getelementptr inbounds {{.*}}* %[[INNER]], i32 0, i32 1
- // CHECK-NEXT: getelementptr inbounds {{.*}}* %[[OUTER]], i32 0, i32 0
- // CHECK-NEXT: load i32** %
- // CHECK-NEXT: load i32* %
+ // CHECK: getelementptr inbounds {{.*}}, {{.*}}* %[[INNER]], i32 0, i32 1
+ // CHECK-NEXT: getelementptr inbounds {{.*}}, {{.*}}* %[[OUTER]], i32 0, i32 0
+ // CHECK-NEXT: load i32*, i32** %
+ // CHECK-NEXT: load i32, i32* %
// CHECK-NEXT: store i32
//
// CHECK: call i32 @"_ZZZ1hiENK3$_2clEvENKUlvE_clEv"({{.*}}* %[[INNER]])
return [=, &c] {
+ // CHECK-LABEL: define internal void @"_ZZ1fvEN3$_0D2Ev"(
+ // CHECK: call void @_ZN1SD1Ev(
+
// CHECK-LABEL: define internal i32 @"_ZZZ1hiENK3$_2clEvENKUlvE_clEv"(
// CHECK: %[[INNER_ADDR:.*]] = alloca
// CHECK: store {{.*}}, {{.*}}** %[[INNER_ADDR]],
- // CHECK: %[[INNER:.*]] = load {{.*}}** %[[INNER_ADDR]]
+ // CHECK: %[[INNER:.*]] = load {{.*}}*, {{.*}}** %[[INNER_ADDR]]
//
// Load capture of 'b'
- // CHECK: getelementptr inbounds {{.*}}* %[[INNER]], i32 0, i32 1
- // CHECK: load i32* %
+ // CHECK: getelementptr inbounds {{.*}}, {{.*}}* %[[INNER]], i32 0, i32 1
+ // CHECK: load i32, i32* %
//
// Load capture of 'c'
- // CHECK: getelementptr inbounds {{.*}}* %[[INNER]], i32 0, i32 0
- // CHECK: load i32** %
- // CHECK: load i32* %
+ // CHECK: getelementptr inbounds {{.*}}, {{.*}}* %[[INNER]], i32 0, i32 0
+ // CHECK: load i32*, i32** %
+ // CHECK: load i32, i32* %
//
// CHECK: add nsw i32
return b + c;
@@ -97,6 +101,3 @@ int h(int a) {
// Ensure we can emit code for init-captures in global lambdas too.
auto global_lambda = [a = 0] () mutable { return ++a; };
int get_incremented() { return global_lambda(); }
-
-// CHECK-LABEL: define internal void @"_ZZ1fvEN3$_0D2Ev"(
-// CHECK: call void @_ZN1SD1Ev(
OpenPOWER on IntegriCloud