diff options
Diffstat (limited to 'test/CodeGenCXX/cxx1y-init-captures.cpp')
-rw-r--r-- | test/CodeGenCXX/cxx1y-init-captures.cpp | 43 |
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( |