diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2017-07-13 19:25:18 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2017-07-13 19:25:18 +0000 |
commit | ca089b24d48ef6fa8da2d0bb8c25bb802c4a95c0 (patch) | |
tree | 3a28a772df9b17aef34f49e3c727965ad28c0c93 /test/SafepointIRVerifier/uses-in-phi-nodes.ll | |
parent | 9df3605dea17e84f8183581f6103bd0c79e2a606 (diff) | |
download | src-ca089b24d48ef6fa8da2d0bb8c25bb802c4a95c0.tar.gz src-ca089b24d48ef6fa8da2d0bb8c25bb802c4a95c0.zip |
Vendor import of llvm trunk r307894:vendor/llvm/llvm-trunk-r307894
Notes
Notes:
svn path=/vendor/llvm/dist/; revision=320957
svn path=/vendor/llvm/llvm-trunk-r307894/; revision=320958; tag=vendor/llvm/llvm-trunk-r307894
Diffstat (limited to 'test/SafepointIRVerifier/uses-in-phi-nodes.ll')
-rw-r--r-- | test/SafepointIRVerifier/uses-in-phi-nodes.ll | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/test/SafepointIRVerifier/uses-in-phi-nodes.ll b/test/SafepointIRVerifier/uses-in-phi-nodes.ll new file mode 100644 index 000000000000..d06eb6e0d9a7 --- /dev/null +++ b/test/SafepointIRVerifier/uses-in-phi-nodes.ll @@ -0,0 +1,78 @@ +; RUN: opt -safepoint-ir-verifier-print-only -verify-safepoint-ir -S %s 2>&1 | FileCheck %s + +define i8 addrspace(1)* @test.not.ok.0(i8 addrspace(1)* %arg) gc "statepoint-example" { +; CHECK-LABEL: Verifying gc pointers in function: test.not.ok.0 + bci_0: + br i1 undef, label %left, label %right + + left: + %safepoint_token = call token (i64, i32, void ()*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_isVoidf(i64 0, i32 0, void ()* undef, i32 0, i32 0, i32 0, i32 5, i32 0, i32 -1, i32 0, i32 0, i32 0) + br label %merge + + right: + br label %merge + + merge: +; CHECK: Illegal use of unrelocated value found! +; CHECK-NEXT: Def: i8 addrspace(1)* %arg +; CHECK-NEXT: Use: %val = phi i8 addrspace(1)* [ %arg, %left ], [ %arg, %right ] + %val = phi i8 addrspace(1)* [ %arg, %left ], [ %arg, %right] + ret i8 addrspace(1)* %val +} + +define i8 addrspace(1)* @test.not.ok.1(i8 addrspace(1)* %arg) gc "statepoint-example" { +; CHECK-LABEL: Verifying gc pointers in function: test.not.ok.1 + bci_0: + br i1 undef, label %left, label %right + + left: + %safepoint_token = call token (i64, i32, void ()*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_isVoidf(i64 0, i32 0, void ()* undef, i32 0, i32 0, i32 0, i32 5, i32 0, i32 -1, i32 0, i32 0, i32 0) + br label %merge + + right: + br label %merge + + merge: +; CHECK: Illegal use of unrelocated value found! +; CHECK-NEXT: Def: i8 addrspace(1)* %arg +; CHECK-NEXT: Use: %val = phi i8 addrspace(1)* [ %arg, %left ], [ null, %right ] + %val = phi i8 addrspace(1)* [ %arg, %left ], [ null, %right] + ret i8 addrspace(1)* %val +} + +define i8 addrspace(1)* @test.ok.0(i8 addrspace(1)* %arg) gc "statepoint-example" { +; CHECK: No illegal uses found by SafepointIRVerifier in: test.ok.0 + bci_0: + br i1 undef, label %left, label %right + + left: + %safepoint_token = call token (i64, i32, void ()*, i32, i32, ...) @llvm.experimental.gc.statepoint.p0f_isVoidf(i64 0, i32 0, void ()* undef, i32 0, i32 0, i32 0, i32 5, i32 0, i32 -1, i32 0, i32 0, i32 0) + br label %merge + + right: + br label %merge + + merge: + %val = phi i8 addrspace(1)* [ null, %left ], [ null, %right] + ret i8 addrspace(1)* %val +} + +define i8 addrspace(1)* @test.ok.1(i8 addrspace(1)* %arg) gc "statepoint-example" { +; CHECK: No illegal uses found by SafepointIRVerifier in: test.ok.1 + bci_0: + br i1 undef, label %left, label %right + + left: + call void @not_statepoint() + br label %merge + + right: + br label %merge + + merge: + %val = phi i8 addrspace(1)* [ %arg, %left ], [ %arg, %right] + ret i8 addrspace(1)* %val +} + +declare token @llvm.experimental.gc.statepoint.p0f_isVoidf(i64, i32, void ()*, i32, i32, ...) +declare void @not_statepoint() |