diff options
| author | wdx727 <wudexin@kuaishou.com> | 2025-11-02 12:55:08 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-11-01 21:55:08 -0700 |
| commit | befae81fa2559a7cefa8fe6227149c6147e1eb2f (patch) | |
| tree | ac4f9f59583bb9b82c282e8c45209282ec10b613 /llvm/lib/CodeGen/MachineStableHash.cpp | |
| parent | 8785595b154042ee460069be1c0c8cca4d4e9d70 (diff) | |
| download | llvm-befae81fa2559a7cefa8fe6227149c6147e1eb2f.zip llvm-befae81fa2559a7cefa8fe6227149c6147e1eb2f.tar.gz llvm-befae81fa2559a7cefa8fe6227149c6147e1eb2f.tar.bz2 | |
Fix the usage issue of getRegMask. (#141215)
In the process of determining whether two MachineOperands are equal and
calculating the hash of a MachineOperand, both MO_RegisterMask and
MO_RegisterLiveOut types were uniformly handled. However, when the type
is MO_RegisterLiveOut, calling getRegMask() triggers an assertion
failure. This PR addresses this issue.
Diffstat (limited to 'llvm/lib/CodeGen/MachineStableHash.cpp')
| -rw-r--r-- | llvm/lib/CodeGen/MachineStableHash.cpp | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/llvm/lib/CodeGen/MachineStableHash.cpp b/llvm/lib/CodeGen/MachineStableHash.cpp index 9d56696..6da708d 100644 --- a/llvm/lib/CodeGen/MachineStableHash.cpp +++ b/llvm/lib/CodeGen/MachineStableHash.cpp @@ -136,7 +136,8 @@ stable_hash llvm::stableHashValue(const MachineOperand &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<llvm::stable_hash> RegMaskHashes(RegMask, RegMask + RegMaskSize); return stable_hash_combine(MO.getType(), MO.getTargetFlags(), |
