[GISel]: Allow PHIs to be DCEd
authorAditya Nandakumar <aditya_nandakumar@apple.com>
Fri, 19 Oct 2018 20:11:52 +0000 (20:11 +0000)
committerAditya Nandakumar <aditya_nandakumar@apple.com>
Fri, 19 Oct 2018 20:11:52 +0000 (20:11 +0000)
https://reviews.llvm.org/D53304

Currently dead phis are not cleaned up during DCE. This patch allows
dead PHI and G_PHI insts to be deleted.

Reviewed by: dsanders

llvm-svn: 344811

llvm/lib/CodeGen/GlobalISel/Utils.cpp
llvm/test/CodeGen/AArch64/GlobalISel/legalize-phi.mir

index 1a5f887..4d3a375 100644 (file)
@@ -137,7 +137,7 @@ bool llvm::isTriviallyDead(const MachineInstr &MI,
   // If we can move an instruction, we can remove it.  Otherwise, it has
   // a side-effect of some sort.
   bool SawStore = false;
-  if (!MI.isSafeToMove(/*AA=*/nullptr, SawStore))
+  if (!MI.isSafeToMove(/*AA=*/nullptr, SawStore) && !MI.isPHI())
     return false;
 
   // Instructions without side-effects are dead iff they only define dead vregs.
index 7c4bbfc..d8f2542 100644 (file)
@@ -121,6 +121,7 @@ body:             |
 
   bb.3:
     %9(s1) = G_PHI %5(s1), %bb.1, %8(s1), %bb.2
+    %11:_(s1) = G_PHI %5(s1), %bb.1, %8(s1), %bb.2
     %10(s32) = G_ZEXT %9(s1)
     $w0 = COPY %10(s32)
     RET_ReallyLR implicit $w0