diff options
author | Richard Smith <richard-llvm@metafoo.co.uk> | 2016-11-07 16:47:20 +0000 |
---|---|---|
committer | Richard Smith <richard-llvm@metafoo.co.uk> | 2016-11-07 16:47:20 +0000 |
commit | 857efb0880dbfbb0f52f401f18f9c3717f6cc276 (patch) | |
tree | 92b07cd2cc0fa9c8eadf213431fe1fe59e40a68f | |
parent | 314cbf7a3bc173921756d540e84802f585bbf1de (diff) | |
download | bcm5719-llvm-857efb0880dbfbb0f52f401f18f9c3717f6cc276.tar.gz bcm5719-llvm-857efb0880dbfbb0f52f401f18f9c3717f6cc276.zip |
Add -O0 support for @llvm.invariant.group.barrier by discarding it if it gets to ISel.
Differential Revision: https://reviews.llvm.org/D26292
llvm-svn: 286119
-rw-r--r-- | llvm/lib/CodeGen/SelectionDAG/FastISel.cpp | 1 | ||||
-rw-r--r-- | llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp | 1 | ||||
-rw-r--r-- | llvm/test/CodeGen/Generic/intrinsics.ll | 7 |
3 files changed, 9 insertions, 0 deletions
diff --git a/llvm/lib/CodeGen/SelectionDAG/FastISel.cpp b/llvm/lib/CodeGen/SelectionDAG/FastISel.cpp index 4ca22497703..452bb059494 100644 --- a/llvm/lib/CodeGen/SelectionDAG/FastISel.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/FastISel.cpp @@ -1216,6 +1216,7 @@ bool FastISel::selectIntrinsicCall(const IntrinsicInst *II) { updateValueMap(II, ResultReg); return true; } + case Intrinsic::invariant_group_barrier: case Intrinsic::expect: { unsigned ResultReg = getRegForValue(II->getArgOperand(0)); if (!ResultReg) diff --git a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp index eea5dcc0cf4..b588d9b193f 100644 --- a/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp @@ -5460,6 +5460,7 @@ SelectionDAGBuilder::visitIntrinsicCall(const CallInst &I, unsigned Intrinsic) { } case Intrinsic::annotation: case Intrinsic::ptr_annotation: + case Intrinsic::invariant_group_barrier: // Drop the intrinsic, but forward the value setValue(&I, getValue(I.getOperand(0))); return nullptr; diff --git a/llvm/test/CodeGen/Generic/intrinsics.ll b/llvm/test/CodeGen/Generic/intrinsics.ll index 29bc499adfc..4d04786a58d 100644 --- a/llvm/test/CodeGen/Generic/intrinsics.ll +++ b/llvm/test/CodeGen/Generic/intrinsics.ll @@ -1,4 +1,5 @@ ; RUN: llc < %s +; RUN: llc -O0 < %s ;; SQRT declare float @llvm.sqrt.f32(float) @@ -38,3 +39,9 @@ define double @test_cos(float %F) { ret double %I } +declare i8* @llvm.invariant.group.barrier(i8*) + +define i8* @barrier(i8* %p) { + %q = call i8* @llvm.invariant.group.barrier(i8* %p) + ret i8* %q +} |