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 a60269f3b185..dcfe4d47292d 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( | 
