summaryrefslogtreecommitdiffstats
path: root/llvm/test
diff options
context:
space:
mode:
authorOwen Anderson <resistor@mac.com>2015-03-10 05:58:21 +0000
committerOwen Anderson <resistor@mac.com>2015-03-10 05:58:21 +0000
commit3e7e67b5eda50ee13e60da4abd4ceb5bb9d4f65f (patch)
tree5c033789662d6d282dfc9f59531d01c806bf266b /llvm/test
parentda19af4f42a132f3f3fb82858fef7037c32e60ad (diff)
downloadbcm5719-llvm-3e7e67b5eda50ee13e60da4abd4ceb5bb9d4f65f.tar.gz
bcm5719-llvm-3e7e67b5eda50ee13e60da4abd4ceb5bb9d4f65f.zip
Fix an issue in the verifier where we could try to read information out of a malformed statepoint intrinsic.
In this situation we would always have already flagged an error on the statepoint intrinsic, but then we carry on to parse other, related GC intrinsics, and could end up crashing during that verification when they try to access data from the malformed statepoint. llvm-svn: 231759
Diffstat (limited to 'llvm/test')
-rw-r--r--llvm/test/Verifier/invalid-statepoint.ll20
1 files changed, 20 insertions, 0 deletions
diff --git a/llvm/test/Verifier/invalid-statepoint.ll b/llvm/test/Verifier/invalid-statepoint.ll
new file mode 100644
index 00000000000..7000973289e
--- /dev/null
+++ b/llvm/test/Verifier/invalid-statepoint.ll
@@ -0,0 +1,20 @@
+; RUN: not opt -verify 2>&1 < %s | FileCheck %s
+
+; CHECK: gc.statepoint: mismatch in number of call arguments
+
+declare zeroext i1 @return0i1()
+
+; Function Attrs: nounwind
+declare i32 @llvm.experimental.gc.statepoint.p0f0i1f(i1 ()*, i32, i32, ...) #0
+
+; Function Attrs: nounwind
+declare i32 addrspace(1)* @llvm.experimental.gc.relocate.p1i32(i32, i32, i32) #0
+
+define i32 addrspace(1)* @0(i32 addrspace(1)* %dparam) {
+ %a00 = load i32, i32 addrspace(1)* %dparam
+ %to0 = call i32 (i1 ()*, i32, i32, ...)* @llvm.experimental.gc.statepoint.p0f0i1f(i1 ()* @return0i1, i32 9, i32 0, i2 0, i32 addrspace(1)* %dparam)
+ %relocate = call i32 addrspace(1)* @llvm.experimental.gc.relocate.p1i32(i32 %to0, i32 0, i32 4)
+ ret i32 addrspace(1)* %relocate
+}
+
+attributes #0 = { nounwind }
OpenPOWER on IntegriCloud