diff options
Diffstat (limited to 'llvm/lib/CodeGen/MachineOperand.cpp')
| -rw-r--r-- | llvm/lib/CodeGen/MachineOperand.cpp | 8 | 
1 files changed, 5 insertions, 3 deletions
diff --git a/llvm/lib/CodeGen/MachineOperand.cpp b/llvm/lib/CodeGen/MachineOperand.cpp index bb9c76f..8c6d219 100644 --- a/llvm/lib/CodeGen/MachineOperand.cpp +++ b/llvm/lib/CodeGen/MachineOperand.cpp @@ -363,8 +363,9 @@ bool MachineOperand::isIdenticalTo(const MachineOperand &Other) const {    case MachineOperand::MO_RegisterMask:    case MachineOperand::MO_RegisterLiveOut: {      // Shallow compare of the two RegMasks -    const uint32_t *RegMask = getRegMask(); -    const uint32_t *OtherRegMask = Other.getRegMask(); +    const uint32_t *RegMask = isRegMask() ? getRegMask() : getRegLiveOut(); +    const uint32_t *OtherRegMask = +        isRegMask() ? Other.getRegMask() : Other.getRegLiveOut();      if (RegMask == OtherRegMask)        return true; @@ -434,7 +435,8 @@ hash_code llvm::hash_value(const MachineOperand &MO) {      if (const MachineFunction *MF = getMFIfAvailable(MO)) {        const TargetRegisterInfo *TRI = MF->getSubtarget().getRegisterInfo();        unsigned RegMaskSize = MachineOperand::getRegMaskSize(TRI->getNumRegs()); -      const uint32_t *RegMask = MO.getRegMask(); +      const uint32_t *RegMask = +          MO.isRegMask() ? MO.getRegMask() : MO.getRegLiveOut();        std::vector<stable_hash> RegMaskHashes(RegMask, RegMask + RegMaskSize);        return hash_combine(MO.getType(), MO.getTargetFlags(),                            stable_hash_combine(RegMaskHashes));  | 
