summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms/SimplifyCFG/SpeculativeExec.ll
diff options
context:
space:
mode:
authorIgor Laevsky <igmyrj@gmail.com>2015-11-18 14:50:18 +0000
committerIgor Laevsky <igmyrj@gmail.com>2015-11-18 14:50:18 +0000
commit7310c68e857b8f9f3094695775d7ce3a7708cfe5 (patch)
tree34587de514edc2be886c05f9a9c603e55a82a1ae /llvm/test/Transforms/SimplifyCFG/SpeculativeExec.ll
parent27e67986afb401d8d120c6aa5d69f053a430311f (diff)
downloadbcm5719-llvm-7310c68e857b8f9f3094695775d7ce3a7708cfe5.tar.gz
bcm5719-llvm-7310c68e857b8f9f3094695775d7ce3a7708cfe5.zip
Revert "Revert "Strip metadata when speculatively hoisting instructions (r252604)"
Failing clang test is now fixed by the r253458. llvm-svn: 253459
Diffstat (limited to 'llvm/test/Transforms/SimplifyCFG/SpeculativeExec.ll')
-rw-r--r--llvm/test/Transforms/SimplifyCFG/SpeculativeExec.ll26
1 files changed, 26 insertions, 0 deletions
diff --git a/llvm/test/Transforms/SimplifyCFG/SpeculativeExec.ll b/llvm/test/Transforms/SimplifyCFG/SpeculativeExec.ll
index c23a96df52e..73f9a0f88ac 100644
--- a/llvm/test/Transforms/SimplifyCFG/SpeculativeExec.ll
+++ b/llvm/test/Transforms/SimplifyCFG/SpeculativeExec.ll
@@ -69,3 +69,29 @@ end:
ret i8* %x10
}
+
+define i32* @test5(i32 %a, i32 %b, i32 %c, i32* dereferenceable(10) %ptr1,
+ i32* dereferenceable(10) %ptr2, i32** dereferenceable(10) %ptr3) nounwind {
+; CHECK-LABEL: @test5(
+entry:
+ %tmp1 = icmp eq i32 %b, 0
+ br i1 %tmp1, label %bb1, label %bb3
+
+bb1: ; preds = %entry
+ %tmp2 = icmp sgt i32 %c, 1
+ br i1 %tmp2, label %bb2, label %bb3
+; CHECK: bb1:
+; CHECK-NEXT: icmp sgt i32 %c, 1
+; CHECK-NEXT: load i32*, i32** %ptr3
+; CHECK-NOT: dereferenceable
+; CHECK-NEXT: select i1 %tmp2, i32* %tmp3, i32* %ptr2
+; CHECK-NEXT: ret i32* %tmp3.ptr2
+
+bb2: ; preds = bb1
+ %tmp3 = load i32*, i32** %ptr3, !dereferenceable !{i64 10}
+ br label %bb3
+
+bb3: ; preds = %bb2, %entry
+ %tmp4 = phi i32* [ %ptr1, %entry ], [ %ptr2, %bb1 ], [ %tmp3, %bb2 ]
+ ret i32* %tmp4
+}
OpenPOWER on IntegriCloud