summaryrefslogtreecommitdiffstats
path: root/llvm/test/Verifier/operand-bundles.ll
diff options
context:
space:
mode:
authorSanjoy Das <sanjoy@playingwithpointers.com>2015-11-11 21:38:02 +0000
committerSanjoy Das <sanjoy@playingwithpointers.com>2015-11-11 21:38:02 +0000
commitcdafd8490a2d48aa14fe79b5a23ef37c2666112f (patch)
tree770980591c6dcaa83e23603f189b45f00874e659 /llvm/test/Verifier/operand-bundles.ll
parent77ef54288ab901a44545d2e69dad8365ad1ee27a (diff)
downloadbcm5719-llvm-cdafd8490a2d48aa14fe79b5a23ef37c2666112f.tar.gz
bcm5719-llvm-cdafd8490a2d48aa14fe79b5a23ef37c2666112f.zip
Introduce deoptimization operand bundles
Summary: This change introduces the notion of "deoptimization" operand bundles. LLVM can recognize and optimize these in more precise ways than it can a generic "unknown" operand bundles. The current form of this special recognition / optimization is an enum entry in LLVMContext, a LangRef blurb and a verifier rule. Over time we will teach LLVM to do more aggressive optimization around deoptimization operand bundles, exploiting known facts about kinds of state deoptimization operand bundles are allowed to track. Reviewers: reames, majnemer, chandlerc, dexonsmith Subscribers: llvm-commits Differential Revision: http://reviews.llvm.org/D14551 llvm-svn: 252806
Diffstat (limited to 'llvm/test/Verifier/operand-bundles.ll')
-rw-r--r--llvm/test/Verifier/operand-bundles.ll13
1 files changed, 13 insertions, 0 deletions
diff --git a/llvm/test/Verifier/operand-bundles.ll b/llvm/test/Verifier/operand-bundles.ll
index 0aba61cccb8..d822568a044 100644
--- a/llvm/test/Verifier/operand-bundles.ll
+++ b/llvm/test/Verifier/operand-bundles.ll
@@ -34,3 +34,16 @@ normal:
%x = add i32 42, 1
ret void
}
+
+define void @f_deopt(i32* %ptr) {
+; CHECK: Multiple deopt operand bundles
+; CHECK-NEXT: call void @g() [ "deopt"(i32 42, i64 100, i32 %x), "deopt"(float 0.000000e+00, i64 100, i32 %l) ]
+; CHECK-NOT: call void @g() [ "deopt"(i32 42, i64 120, i32 %x) ]
+
+ entry:
+ %l = load i32, i32* %ptr
+ call void @g() [ "deopt"(i32 42, i64 100, i32 %x), "deopt"(float 0.0, i64 100, i32 %l) ]
+ call void @g() [ "deopt"(i32 42, i64 120) ] ;; The verifier should not complain about this one
+ %x = add i32 42, 1
+ ret void
+}
OpenPOWER on IntegriCloud