diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2016-07-23 20:41:05 +0000 | 
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2016-07-23 20:41:05 +0000 | 
| commit | 01095a5d43bbfde13731688ddcf6048ebb8b7721 (patch) | |
| tree | 4def12e759965de927d963ac65840d663ef9d1ea /lib/CodeGen/MachineInstrBundle.cpp | |
| parent | f0f4822ed4b66e3579e92a89f368f8fb860e218e (diff) | |
Notes
Diffstat (limited to 'lib/CodeGen/MachineInstrBundle.cpp')
| -rw-r--r-- | lib/CodeGen/MachineInstrBundle.cpp | 15 | 
1 files changed, 10 insertions, 5 deletions
diff --git a/lib/CodeGen/MachineInstrBundle.cpp b/lib/CodeGen/MachineInstrBundle.cpp index 4619daf30141..e4686b3c5c4e 100644 --- a/lib/CodeGen/MachineInstrBundle.cpp +++ b/lib/CodeGen/MachineInstrBundle.cpp @@ -17,6 +17,7 @@  #include "llvm/Target/TargetMachine.h"  #include "llvm/Target/TargetRegisterInfo.h"  #include "llvm/Target/TargetSubtargetInfo.h" +#include <utility>  using namespace llvm;  namespace { @@ -24,7 +25,7 @@ namespace {    public:      static char ID; // Pass identification      UnpackMachineBundles(std::function<bool(const Function &)> Ftor = nullptr) -        : MachineFunctionPass(ID), PredicateFtor(Ftor) { +        : MachineFunctionPass(ID), PredicateFtor(std::move(Ftor)) {        initializeUnpackMachineBundlesPass(*PassRegistry::getPassRegistry());      } @@ -78,7 +79,7 @@ bool UnpackMachineBundles::runOnMachineFunction(MachineFunction &MF) {  FunctionPass *  llvm::createUnpackMachineBundles(std::function<bool(const Function &)> Ftor) { -  return new UnpackMachineBundles(Ftor); +  return new UnpackMachineBundles(std::move(Ftor));  }  namespace { @@ -293,7 +294,7 @@ MachineOperandIteratorBase::PhysRegInfo  MachineOperandIteratorBase::analyzePhysReg(unsigned Reg,                                             const TargetRegisterInfo *TRI) {    bool AllDefsDead = true; -  PhysRegInfo PRI = {false, false, false, false, false, false, false}; +  PhysRegInfo PRI = {false, false, false, false, false, false, false, false};    assert(TargetRegisterInfo::isPhysicalRegister(Reg) &&           "analyzePhysReg not given a physical register!"); @@ -332,8 +333,12 @@ MachineOperandIteratorBase::analyzePhysReg(unsigned Reg,      }    } -  if (AllDefsDead && PRI.FullyDefined) -    PRI.DeadDef = true; +  if (AllDefsDead) { +    if (PRI.FullyDefined || PRI.Clobbered) +      PRI.DeadDef = true; +    else if (PRI.Defined) +      PRI.PartialDeadDef = true; +  }    return PRI;  }  | 
