]> granicus.if.org Git - llvm/commitdiff
GlobalISel: drop lifetime intrinsics during translation.
authorTim Northover <tnorthover@apple.com>
Fri, 10 Feb 2017 19:10:38 +0000 (19:10 +0000)
committerTim Northover <tnorthover@apple.com>
Fri, 10 Feb 2017 19:10:38 +0000 (19:10 +0000)
We don't use them yet and they just cause problems.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@294770 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/GlobalISel/IRTranslator.cpp
test/CodeGen/AArch64/GlobalISel/arm64-irtranslator.ll

index 361efe6c1d6438a1a02dd9e46fb40cb93a858aa7..97292dc5bd7f6c712439c21a6cc1a22466a10f74 100644 (file)
@@ -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");
index e658a09858da87bff1abd91f650da04d15c23605..acb342af9a5b1d9e62a421cc387141436db49bc9 100644 (file)
@@ -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
+}