summaryrefslogtreecommitdiffstats
path: root/clang/test/CodeGenCXX/lambda-expressions.cpp
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2016-12-14 01:32:13 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2016-12-14 01:32:13 +0000
commit939b6880d4de643ff6332c7aa1bc3f79c0c8e4f5 (patch)
tree348e373b946bab8509b085968c88d36978776532 /clang/test/CodeGenCXX/lambda-expressions.cpp
parent8efb35b4cb0daa4191f92e5bfe307868e4791389 (diff)
downloadbcm5719-llvm-939b6880d4de643ff6332c7aa1bc3f79c0c8e4f5.tar.gz
bcm5719-llvm-939b6880d4de643ff6332c7aa1bc3f79c0c8e4f5.zip
When emitting a multidimensional array copy, only emit a single flattened
cleanup loop for exception handling. llvm-svn: 289623
Diffstat (limited to 'clang/test/CodeGenCXX/lambda-expressions.cpp')
-rw-r--r--clang/test/CodeGenCXX/lambda-expressions.cpp16
1 files changed, 4 insertions, 12 deletions
diff --git a/clang/test/CodeGenCXX/lambda-expressions.cpp b/clang/test/CodeGenCXX/lambda-expressions.cpp
index cefaeb4017b..2c625daaf83 100644
--- a/clang/test/CodeGenCXX/lambda-expressions.cpp
+++ b/clang/test/CodeGenCXX/lambda-expressions.cpp
@@ -140,7 +140,7 @@ namespace pr28595 {
// CHECK: call {{.*}}after_init
after_init();
- // CHECK: %[[DST_0:.*]] = getelementptr inbounds [3 x [5 x %[[A]]]], {{.*}}, i64 0, i64 0
+ // CHECK: %[[DST_0:.*]] = getelementptr {{.*}} [3 x [5 x %[[A]]]]* %[[DST:.*]], i64 0, i64 0
// CHECK: br label
// CHECK: %[[I:.*]] = phi i64 [ 0, %{{.*}} ], [ %[[I_NEXT:.*]], {{.*}} ]
// CHECK: %[[DST_I:.*]] = getelementptr {{.*}} [5 x %[[A]]]* %[[DST_0]], i64 %[[I]]
@@ -150,6 +150,7 @@ namespace pr28595 {
// CHECK: br label
// CHECK: %[[J:.*]] = phi i64 [ 0, %{{.*}} ], [ %[[J_NEXT:.*]], {{.*}} ]
// CHECK: %[[DST_I_J:.*]] = getelementptr {{.*}} %[[A]]* %[[DST_I_0]], i64 %[[J]]
+ // CHECK: %[[DST_0_0:.*]] = bitcast [5 x %[[A]]]* %[[DST_0]] to %[[A]]*
// CHECK: %[[SRC_I_J:.*]] = getelementptr {{.*}} [5 x %[[A]]]* %[[SRC_I]], i64 0, i64 %[[J]]
//
// CHECK: invoke void @_ZN7pr285954TempC1Ev
@@ -173,21 +174,12 @@ namespace pr28595 {
// CHECK: invoke void @_ZN7pr285954TempD1Ev
// CHECK: br label %[[CLEANUP]]
//
- // FIXME: only emit a single cleanup loop here
// CHECK: [[CLEANUP]]:
- // CHECK: icmp eq %[[A]]* %[[DST_I_0]], %[[DST_I_J]]
+ // CHECK: icmp eq %[[A]]* %[[DST_0_0]], %[[DST_I_J]]
// CHECK: %[[T0:.*]] = phi %[[A]]*
// CHECK: %[[T1:.*]] = getelementptr inbounds %[[A]], %[[A]]* %[[T0]], i64 -1
// CHECK: call void @_ZN7pr285951AD1Ev(%[[A]]* %[[T1]])
- // CHECK: icmp eq %[[A]]* %[[T1]], %[[DST_I_0]]
- //
- // CHECK: %[[BEGIN:.*]] = getelementptr {{.*}} %[[DST_0]], i64 0, i64 0
- // CHECK: %[[END:.*]] = getelementptr {{.*}} %[[DST_I]], i64 0, i64 0
- // CHECK: icmp eq %[[A]]* %[[BEGIN]], %[[END]]
- // CHECK: %[[T0:.*]] = phi %[[A]]*
- // CHECK: %[[T1:.*]] = getelementptr inbounds %[[A]], %[[A]]* %[[T0]], i64 -1
- // CHECK: call void @_ZN7pr285951AD1Ev(%[[A]]* %[[T1]])
- // CHECK: icmp eq %[[A]]* %[[T1]], %[[BEGIN]]
+ // CHECK: icmp eq %[[A]]* %[[T1]], %[[DST_0_0]]
(void) [array]{};
}
}
OpenPOWER on IntegriCloud