diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2021-08-22 19:00:43 +0000 | 
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2021-12-06 16:30:02 +0000 | 
| commit | 5f7ddb1456d5b926e85710da690bf548ef0c9fc8 (patch) | |
| tree | f8845b108c5c07836b95c8229c96cd745fc9fb2c /contrib/llvm-project/llvm/lib/Target/WebAssembly/WebAssemblyDebugValueManager.cpp | |
| parent | 3f82687cdf02983d8f3294df4d97b09cf211141b (diff) | |
Diffstat (limited to 'contrib/llvm-project/llvm/lib/Target/WebAssembly/WebAssemblyDebugValueManager.cpp')
| -rw-r--r-- | contrib/llvm-project/llvm/lib/Target/WebAssembly/WebAssemblyDebugValueManager.cpp | 17 | 
1 files changed, 12 insertions, 5 deletions
diff --git a/contrib/llvm-project/llvm/lib/Target/WebAssembly/WebAssemblyDebugValueManager.cpp b/contrib/llvm-project/llvm/lib/Target/WebAssembly/WebAssemblyDebugValueManager.cpp index 78191ae758fe..55be64ad7da0 100644 --- a/contrib/llvm-project/llvm/lib/Target/WebAssembly/WebAssemblyDebugValueManager.cpp +++ b/contrib/llvm-project/llvm/lib/Target/WebAssembly/WebAssemblyDebugValueManager.cpp @@ -24,13 +24,14 @@ WebAssemblyDebugValueManager::WebAssemblyDebugValueManager(    // the whole BB, not just contiguous DBG_VALUEs.    if (!Instr->getOperand(0).isReg())      return; +  CurrentReg = Instr->getOperand(0).getReg();    MachineBasicBlock::iterator DI = *Instr;    ++DI;    for (MachineBasicBlock::iterator DE = Instr->getParent()->end(); DI != DE;         ++DI) {      if (DI->isDebugValue() && -        DI->getDebugOperandForReg(Instr->getOperand(0).getReg())) +        DI->hasDebugOperandForReg(Instr->getOperand(0).getReg()))        DbgValues.push_back(&*DI);    }  } @@ -43,7 +44,9 @@ void WebAssemblyDebugValueManager::move(MachineInstr *Insert) {  void WebAssemblyDebugValueManager::updateReg(unsigned Reg) {    for (auto *DBI : DbgValues) -    DBI->getDebugOperand(0).setReg(Reg); +    for (auto &MO : DBI->getDebugOperandsForReg(CurrentReg)) +      MO.setReg(Reg); +  CurrentReg = Reg;  }  void WebAssemblyDebugValueManager::clone(MachineInstr *Insert, @@ -52,14 +55,18 @@ void WebAssemblyDebugValueManager::clone(MachineInstr *Insert,    MachineFunction *MF = MBB->getParent();    for (MachineInstr *DBI : reverse(DbgValues)) {      MachineInstr *Clone = MF->CloneMachineInstr(DBI); -    Clone->getDebugOperand(0).setReg(NewReg); +    for (auto &MO : Clone->getDebugOperandsForReg(CurrentReg)) +      MO.setReg(NewReg);      MBB->insert(Insert, Clone);    }  }  void WebAssemblyDebugValueManager::replaceWithLocal(unsigned LocalId) {    for (auto *DBI : DbgValues) { -    MachineOperand &Op = DBI->getDebugOperand(0); -    Op.ChangeToTargetIndex(llvm::WebAssembly::TI_LOCAL, LocalId); +    auto IndexType = DBI->isIndirectDebugValue() +                         ? llvm::WebAssembly::TI_LOCAL_INDIRECT +                         : llvm::WebAssembly::TI_LOCAL; +    for (auto &MO : DBI->getDebugOperandsForReg(CurrentReg)) +      MO.ChangeToTargetIndex(IndexType, LocalId);    }  }  | 
