diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2021-11-19 20:06:13 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2021-11-19 20:06:13 +0000 |
commit | c0981da47d5696fe36474fcf86b4ce03ae3ff818 (patch) | |
tree | f42add1021b9f2ac6a69ac7cf6c4499962739a45 /llvm/lib/Target/WebAssembly/WebAssemblyFixBrTableDefaults.cpp | |
parent | 344a3780b2e33f6ca763666c380202b18aab72a3 (diff) |
Diffstat (limited to 'llvm/lib/Target/WebAssembly/WebAssemblyFixBrTableDefaults.cpp')
-rw-r--r-- | llvm/lib/Target/WebAssembly/WebAssemblyFixBrTableDefaults.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyFixBrTableDefaults.cpp b/llvm/lib/Target/WebAssembly/WebAssemblyFixBrTableDefaults.cpp index 52aa3534c78e..5bdec89f1125 100644 --- a/llvm/lib/Target/WebAssembly/WebAssemblyFixBrTableDefaults.cpp +++ b/llvm/lib/Target/WebAssembly/WebAssemblyFixBrTableDefaults.cpp @@ -61,9 +61,13 @@ void fixBrTableIndex(MachineInstr &MI, MachineBasicBlock *MBB, auto ExtMI = MF.getRegInfo().getVRegDef(MI.getOperand(0).getReg()); if (ExtMI->getOpcode() == WebAssembly::I64_EXTEND_U_I32) { // Unnecessarily extending a 32-bit value to 64, remove it. - assert(MI.getOperand(0).getReg() == ExtMI->getOperand(0).getReg()); + auto ExtDefReg = ExtMI->getOperand(0).getReg(); + assert(MI.getOperand(0).getReg() == ExtDefReg); MI.getOperand(0).setReg(ExtMI->getOperand(1).getReg()); - ExtMI->eraseFromParent(); + if (MF.getRegInfo().use_nodbg_empty(ExtDefReg)) { + // No more users of extend, delete it. + ExtMI->eraseFromParent(); + } } else { // Incoming 64-bit value that needs to be truncated. Register Reg32 = |