[llvm] r271519 - [RDF] Ignore implicit defs when resetting <kill> flags

Krzysztof Parzyszek via llvm-commits llvm-commits at lists.llvm.org
Thu Jun 2 07:30:10 PDT 2016


Author: kparzysz
Date: Thu Jun  2 09:30:09 2016
New Revision: 271519

URL: http://llvm.org/viewvc/llvm-project?rev=271519&view=rev
Log:
[RDF] Ignore implicit defs when resetting <kill> flags

Modified:
    llvm/trunk/lib/Target/Hexagon/RDFLiveness.cpp

Modified: llvm/trunk/lib/Target/Hexagon/RDFLiveness.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Hexagon/RDFLiveness.cpp?rev=271519&r1=271518&r2=271519&view=diff
==============================================================================
--- llvm/trunk/lib/Target/Hexagon/RDFLiveness.cpp (original)
+++ llvm/trunk/lib/Target/Hexagon/RDFLiveness.cpp Thu Jun  2 09:30:09 2016
@@ -689,7 +689,11 @@ void Liveness::resetKills(MachineBasicBl
 
     MI->clearKillInfo();
     for (auto &Op : MI->operands()) {
-      if (!Op.isReg() || !Op.isDef())
+      // An implicit def of a super-register may not necessarily start a
+      // live range of it, since an implicit use could be used to keep parts
+      // of it live. Instead of analyzing the implicit operands, ignore
+      // implicit defs.
+      if (!Op.isReg() || !Op.isDef() || Op.isImplicit())
         continue;
       unsigned R = Op.getReg();
       if (!TargetRegisterInfo::isPhysicalRegister(R))




More information about the llvm-commits mailing list