diff options
| author | Tim Northover <tnorthover@apple.com> | 2017-02-10 19:10:38 +0000 |
|---|---|---|
| committer | Tim Northover <tnorthover@apple.com> | 2017-02-10 19:10:38 +0000 |
| commit | 0e01170c79d5ead074f528b9fdd07102dfac00a3 (patch) | |
| tree | 19a268c2c9152f0a8d7cbfa70844f13a660fb535 | |
| parent | e81f9cc63df164df8bb075fd14fb519e48631081 (diff) | |
| download | bcm5719-llvm-0e01170c79d5ead074f528b9fdd07102dfac00a3.tar.gz bcm5719-llvm-0e01170c79d5ead074f528b9fdd07102dfac00a3.zip | |
GlobalISel: drop lifetime intrinsics during translation.
We don't use them yet and they just cause problems.
llvm-svn: 294770
| -rw-r--r-- | llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp | 8 | ||||
| -rw-r--r-- | llvm/test/CodeGen/AArch64/GlobalISel/arm64-irtranslator.ll | 11 |
2 files changed, 19 insertions, 0 deletions
diff --git a/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp b/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp index 361efe6c1d6..97292dc5bd7 100644 --- a/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp +++ b/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp @@ -555,6 +555,14 @@ bool IRTranslator::translateKnownIntrinsic(const CallInst &CI, Intrinsic::ID ID, switch (ID) { default: break; + case Intrinsic::lifetime_start: + case Intrinsic::lifetime_end: + // Stack coloring is not enabled in O0 (which we care about now) so we can + // drop these. Make sure someone notices when we start compiling at higher + // opts though. + if (MF->getTarget().getOptLevel() != CodeGenOpt::None) + return false; + return true; case Intrinsic::dbg_declare: { const DbgDeclareInst &DI = cast<DbgDeclareInst>(CI); assert(DI.getVariable() && "Missing variable"); diff --git a/llvm/test/CodeGen/AArch64/GlobalISel/arm64-irtranslator.ll b/llvm/test/CodeGen/AArch64/GlobalISel/arm64-irtranslator.ll index e658a09858d..acb342af9a5 100644 --- a/llvm/test/CodeGen/AArch64/GlobalISel/arm64-irtranslator.ll +++ b/llvm/test/CodeGen/AArch64/GlobalISel/arm64-irtranslator.ll @@ -1144,3 +1144,14 @@ define float @test_pow_intrin(float %l, float %r) { %res = call float @llvm.pow.f32(float %l, float %r) ret float %res } + +declare void @llvm.lifetime.start(i64, i8*) +declare void @llvm.lifetime.end(i64, i8*) +define void @test_lifetime_intrin() { +; CHECK-LABEL: name: test_lifetime_intrin +; CHECK: RET_ReallyLR + %slot = alloca i8, i32 4 + call void @llvm.lifetime.start(i64 0, i8* %slot) + call void @llvm.lifetime.end(i64 0, i8* %slot) + ret void +} |

