summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTim Northover <tnorthover@apple.com>2017-02-10 19:10:38 +0000
committerTim Northover <tnorthover@apple.com>2017-02-10 19:10:38 +0000
commit0e01170c79d5ead074f528b9fdd07102dfac00a3 (patch)
tree19a268c2c9152f0a8d7cbfa70844f13a660fb535
parente81f9cc63df164df8bb075fd14fb519e48631081 (diff)
downloadbcm5719-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.cpp8
-rw-r--r--llvm/test/CodeGen/AArch64/GlobalISel/arm64-irtranslator.ll11
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
+}
OpenPOWER on IntegriCloud