[llvm] r294770 - GlobalISel: drop lifetime intrinsics during translation.

Tim Northover via llvm-commits llvm-commits at lists.llvm.org
Fri Feb 10 11:10:39 PST 2017


Author: tnorthover
Date: Fri Feb 10 13:10:38 2017
New Revision: 294770

URL: http://llvm.org/viewvc/llvm-project?rev=294770&view=rev
Log:
GlobalISel: drop lifetime intrinsics during translation.

We don't use them yet and they just cause problems.

Modified:
    llvm/trunk/lib/CodeGen/GlobalISel/IRTranslator.cpp
    llvm/trunk/test/CodeGen/AArch64/GlobalISel/arm64-irtranslator.ll

Modified: llvm/trunk/lib/CodeGen/GlobalISel/IRTranslator.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/GlobalISel/IRTranslator.cpp?rev=294770&r1=294769&r2=294770&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/GlobalISel/IRTranslator.cpp (original)
+++ llvm/trunk/lib/CodeGen/GlobalISel/IRTranslator.cpp Fri Feb 10 13:10:38 2017
@@ -555,6 +555,14 @@ bool IRTranslator::translateKnownIntrins
   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");

Modified: llvm/trunk/test/CodeGen/AArch64/GlobalISel/arm64-irtranslator.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/AArch64/GlobalISel/arm64-irtranslator.ll?rev=294770&r1=294769&r2=294770&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/AArch64/GlobalISel/arm64-irtranslator.ll (original)
+++ llvm/trunk/test/CodeGen/AArch64/GlobalISel/arm64-irtranslator.ll Fri Feb 10 13:10:38 2017
@@ -1144,3 +1144,14 @@ define float @test_pow_intrin(float %l,
   %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
+}




More information about the llvm-commits mailing list