[LICM] Don't insert instructions after a catchswitch when performing loop promotion
[oota-llvm.git] / test / Transforms / InstMerge / ld_hoist_st_sink.ll
index 83970275b19bfd6205e9077e6e583ff6193dd4ce..1d3f941882e55aa3248d458b15518699aa7484f0 100644 (file)
@@ -9,7 +9,7 @@ target datalayout = "e-m:o-i64:64-i128:128-n32:64-S128"
 define i64 @foo(%struct.node* nocapture readonly %r) nounwind {
 entry:
   %node.0.in16 = getelementptr inbounds %struct.node, %struct.node* %r, i64 0, i32 2
-  %node.017 = load %struct.node** %node.0.in16, align 8
+  %node.017 = load %struct.node*, %struct.node** %node.0.in16, align 8
   %tobool18 = icmp eq %struct.node* %node.017, null
   br i1 %tobool18, label %while.end, label %while.body.preheader
 
@@ -22,23 +22,23 @@ while.body:                                       ; preds = %while.body.preheade
   %node.020 = phi %struct.node* [ %node.0, %if.end ], [ %node.017, %while.body.preheader ]
   %sum.019 = phi i64 [ %inc, %if.end ], [ 0, %while.body.preheader ]
   %orientation = getelementptr inbounds %struct.node, %struct.node* %node.020, i64 0, i32 4
-  %0 = load i64* %orientation, align 8
+  %0 = load i64, i64* %orientation, align 8
   %cmp = icmp eq i64 %0, 1
   br i1 %cmp, label %if.then, label %if.else
 ; CHECK: if.then
 if.then:                                          ; preds = %while.body
   %a = getelementptr inbounds %struct.node, %struct.node* %node.020, i64 0, i32 5
 ; CHECK-NOT: load %struct.arc
-  %1 = load %struct.arc** %a, align 8
+  %1 = load %struct.arc*, %struct.arc** %a, align 8
   %cost = getelementptr inbounds %struct.arc, %struct.arc* %1, i64 0, i32 0
-; CHECK-NOT: load i64*
-  %2 = load i64* %cost, align 8
+; CHECK-NOT: load i64, i64*
+  %2 = load i64, i64* %cost, align 8
   %pred = getelementptr inbounds %struct.node, %struct.node* %node.020, i64 0, i32 1
-; CHECK-NOT: load %struct.node**
-  %3 = load %struct.node** %pred, align 8
+; CHECK-NOT: load %struct.node*, %struct.node**
+  %3 = load %struct.node*, %struct.node** %pred, align 8
   %p = getelementptr inbounds %struct.node, %struct.node* %3, i64 0, i32 6
-; CHECK-NOT: load i64*
-  %4 = load i64* %p, align 8
+; CHECK-NOT: load i64, i64*
+  %4 = load i64, i64* %p, align 8
   %add = add nsw i64 %4, %2
   %p1 = getelementptr inbounds %struct.node, %struct.node* %node.020, i64 0, i32 6
 ; CHECK-NOT: store i64
@@ -48,17 +48,17 @@ if.then:                                          ; preds = %while.body
 ; CHECK: if.else
 if.else:                                          ; preds = %while.body
   %pred2 = getelementptr inbounds %struct.node, %struct.node* %node.020, i64 0, i32 1
-; CHECK-NOT: load %struct.node**
-  %5 = load %struct.node** %pred2, align 8
+; CHECK-NOT: load %struct.node*, %struct.node**
+  %5 = load %struct.node*, %struct.node** %pred2, align 8
   %p3 = getelementptr inbounds %struct.node, %struct.node* %5, i64 0, i32 6
-; CHECK-NOT: load i64*
-  %6 = load i64* %p3, align 8
+; CHECK-NOT: load i64, i64*
+  %6 = load i64, i64* %p3, align 8
   %a4 = getelementptr inbounds %struct.node, %struct.node* %node.020, i64 0, i32 5
-; CHECK-NOT: load %struct.arc**
-  %7 = load %struct.arc** %a4, align 8
+; CHECK-NOT: load %struct.arc*, %struct.arc**
+  %7 = load %struct.arc*, %struct.arc** %a4, align 8
   %cost5 = getelementptr inbounds %struct.arc, %struct.arc* %7, i64 0, i32 0
-; CHECK-NOT: load i64*
-  %8 = load i64* %cost5, align 8
+; CHECK-NOT: load i64, i64*
+  %8 = load i64, i64* %cost5, align 8
   %sub = sub nsw i64 %6, %8
   %p6 = getelementptr inbounds %struct.node, %struct.node* %node.020, i64 0, i32 6
 ; CHECK-NOT: store i64
@@ -70,7 +70,7 @@ if.end:                                           ; preds = %if.else, %if.then
 ; CHECK: store
   %inc = add nsw i64 %sum.019, 1
   %node.0.in = getelementptr inbounds %struct.node, %struct.node* %node.020, i64 0, i32 2
-  %node.0 = load %struct.node** %node.0.in, align 8
+  %node.0 = load %struct.node*, %struct.node** %node.0.in, align 8
   %tobool = icmp eq %struct.node* %node.0, null
   br i1 %tobool, label %while.end.loopexit, label %while.body