diff options
| author | Sanjoy Das <sanjoy@playingwithpointers.com> | 2016-01-20 19:50:25 +0000 |
|---|---|---|
| committer | Sanjoy Das <sanjoy@playingwithpointers.com> | 2016-01-20 19:50:25 +0000 |
| commit | a34ce95b60f14f5c53d3f01a4c90d225477bd5e0 (patch) | |
| tree | 3524b3e6ac3cb9eebb6b0bcb0388374e00913fff /llvm/test/Verifier/operand-bundles.ll | |
| parent | af69f1c690ced497cfef5869e987e584b8d3eb24 (diff) | |
| download | bcm5719-llvm-a34ce95b60f14f5c53d3f01a4c90d225477bd5e0.tar.gz bcm5719-llvm-a34ce95b60f14f5c53d3f01a4c90d225477bd5e0.zip | |
Add a "gc-transition" operand bundle
Summary:
This adds a new kind of operand bundle to LLVM denoted by the
`"gc-transition"` tag. Inputs to `"gc-transition"` operand bundle are
lowered into the "transition args" section of `gc.statepoint` by
`RewriteStatepointsForGC`.
This removes the last bit of functionality that was unsupported in the
deopt bundle based code path in `RewriteStatepointsForGC`.
Reviewers: pgavlin, JosephTremoulet, reames
Subscribers: sanjoy, mcrosier, llvm-commits
Differential Revision: http://reviews.llvm.org/D16342
llvm-svn: 258338
Diffstat (limited to 'llvm/test/Verifier/operand-bundles.ll')
| -rw-r--r-- | llvm/test/Verifier/operand-bundles.ll | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/llvm/test/Verifier/operand-bundles.ll b/llvm/test/Verifier/operand-bundles.ll index d822568a044..2598a7889f3 100644 --- a/llvm/test/Verifier/operand-bundles.ll +++ b/llvm/test/Verifier/operand-bundles.ll @@ -47,3 +47,16 @@ define void @f_deopt(i32* %ptr) { %x = add i32 42, 1 ret void } + +define void @f_gc_transition(i32* %ptr) { +; CHECK: Multiple gc-transition operand bundles +; CHECK-NEXT: call void @g() [ "gc-transition"(i32 42, i64 100, i32 %x), "gc-transition"(float 0.000000e+00, i64 100, i32 %l) ] +; CHECK-NOT: call void @g() [ "gc-transition"(i32 42, i64 120, i32 %x) ] + + entry: + %l = load i32, i32* %ptr + call void @g() [ "gc-transition"(i32 42, i64 100, i32 %x), "gc-transition"(float 0.0, i64 100, i32 %l) ] + call void @g() [ "gc-transition"(i32 42, i64 120) ] ;; The verifier should not complain about this one + %x = add i32 42, 1 + ret void +} |

