[PATCH] D98730: [AArch64][GlobalISel] Fall back if disabling neon/fp in the translator.

Amara Emerson via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Mar 17 15:44:13 PDT 2021


aemerson updated this revision to Diff 331398.

Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D98730/new/

https://reviews.llvm.org/D98730

Files:
  llvm/lib/CodeGen/GlobalISel/Utils.cpp
  llvm/test/CodeGen/AArch64/GlobalISel/lifetime-marker-no-dce.mir


Index: llvm/test/CodeGen/AArch64/GlobalISel/lifetime-marker-no-dce.mir
===================================================================
--- /dev/null
+++ llvm/test/CodeGen/AArch64/GlobalISel/lifetime-marker-no-dce.mir
@@ -0,0 +1,24 @@
+# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
+# RUN: llc -mtriple aarch64 -run-pass=aarch64-prelegalizer-combiner -global-isel -verify-machineinstrs %s -o - | FileCheck %s
+# Check that we don't DCE the lifetime markers even though they don't have any users.
+---
+name:            test_lifetime_no_dce
+alignment:       4
+tracksRegLiveness: true
+frameInfo:
+  maxAlignment:    4
+stack:
+  - { id: 0, size: 4, alignment: 4 }
+machineFunctionInfo: {}
+body:             |
+  bb.1:
+    ;%0:_(p0) = G_FRAME_INDEX %stack.0.slot
+    ; CHECK-LABEL: name: test_lifetime_no_dce
+    ; CHECK: LIFETIME_START %stack.0
+    ; CHECK: LIFETIME_END %stack.0
+    ; CHECK: RET_ReallyLR
+    LIFETIME_START %stack.0
+    LIFETIME_END %stack.0
+    RET_ReallyLR
+
+...
Index: llvm/lib/CodeGen/GlobalISel/Utils.cpp
===================================================================
--- llvm/lib/CodeGen/GlobalISel/Utils.cpp
+++ llvm/lib/CodeGen/GlobalISel/Utils.cpp
@@ -200,6 +200,10 @@
   // Don't delete frame allocation labels.
   if (MI.getOpcode() == TargetOpcode::LOCAL_ESCAPE)
     return false;
+  // LIFETIME markers should be preserved even if they seem dead.
+  if (MI.getOpcode() == TargetOpcode::LIFETIME_START ||
+      MI.getOpcode() == TargetOpcode::LIFETIME_END)
+    return false;
 
   // If we can move an instruction, we can remove it.  Otherwise, it has
   // a side-effect of some sort.


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D98730.331398.patch
Type: text/x-patch
Size: 1669 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20210317/80b8ada5/attachment.bin>


More information about the llvm-commits mailing list