[llvm] 999643f - [WebAssembly] Tidy up DebugValueManager (NFC)
Heejin Ahn via llvm-commits
llvm-commits at lists.llvm.org
Thu Mar 23 15:35:50 PDT 2023
Author: Heejin Ahn
Date: 2023-03-23T15:35:26-07:00
New Revision: 999643f1513e86d7d438ec953a3d73c4bc21eb25
URL: https://github.com/llvm/llvm-project/commit/999643f1513e86d7d438ec953a3d73c4bc21eb25
DIFF: https://github.com/llvm/llvm-project/commit/999643f1513e86d7d438ec953a3d73c4bc21eb25.diff
LOG: [WebAssembly] Tidy up DebugValueManager (NFC)
Misc. cleanups for `WebAssemblyDebugValueManager`.
- Use `Register` for registers
- Simpler for loop iteration
- Rename a variable
- Reorder methods
- Reduce `SmallVector` size for `DBG_VALUE`s to 1; one def usually have
a single `DBG_VALUE` attached to it in most cases
- Add a few more lines of comments
Reviewed By: dschuff
Differential Revision: https://reviews.llvm.org/D146743
Added:
Modified:
llvm/lib/Target/WebAssembly/WebAssemblyDebugValueManager.cpp
llvm/lib/Target/WebAssembly/WebAssemblyDebugValueManager.h
Removed:
################################################################################
diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyDebugValueManager.cpp b/llvm/lib/Target/WebAssembly/WebAssemblyDebugValueManager.cpp
index 55be64ad7da01..45502a577e4e2 100644
--- a/llvm/lib/Target/WebAssembly/WebAssemblyDebugValueManager.cpp
+++ b/llvm/lib/Target/WebAssembly/WebAssemblyDebugValueManager.cpp
@@ -18,21 +18,18 @@
using namespace llvm;
-WebAssemblyDebugValueManager::WebAssemblyDebugValueManager(
- MachineInstr *Instr) {
+WebAssemblyDebugValueManager::WebAssemblyDebugValueManager(MachineInstr *Def) {
// This code
diff ers from MachineInstr::collectDebugValues in that it scans
// the whole BB, not just contiguous DBG_VALUEs.
- if (!Instr->getOperand(0).isReg())
+ if (!Def->getOperand(0).isReg())
return;
- CurrentReg = Instr->getOperand(0).getReg();
+ CurrentReg = Def->getOperand(0).getReg();
- MachineBasicBlock::iterator DI = *Instr;
- ++DI;
- for (MachineBasicBlock::iterator DE = Instr->getParent()->end(); DI != DE;
- ++DI) {
- if (DI->isDebugValue() &&
- DI->hasDebugOperandForReg(Instr->getOperand(0).getReg()))
- DbgValues.push_back(&*DI);
+ for (MachineBasicBlock::iterator MI = std::next(Def->getIterator()),
+ ME = Def->getParent()->end();
+ MI != ME; ++MI) {
+ if (MI->isDebugValue() && MI->hasDebugOperandForReg(CurrentReg))
+ DbgValues.push_back(&*MI);
}
}
@@ -42,15 +39,8 @@ void WebAssemblyDebugValueManager::move(MachineInstr *Insert) {
MBB->splice(Insert, DBI->getParent(), DBI);
}
-void WebAssemblyDebugValueManager::updateReg(unsigned Reg) {
- for (auto *DBI : DbgValues)
- for (auto &MO : DBI->getDebugOperandsForReg(CurrentReg))
- MO.setReg(Reg);
- CurrentReg = Reg;
-}
-
void WebAssemblyDebugValueManager::clone(MachineInstr *Insert,
- unsigned NewReg) {
+ Register NewReg) {
MachineBasicBlock *MBB = Insert->getParent();
MachineFunction *MF = MBB->getParent();
for (MachineInstr *DBI : reverse(DbgValues)) {
@@ -61,6 +51,13 @@ void WebAssemblyDebugValueManager::clone(MachineInstr *Insert,
}
}
+void WebAssemblyDebugValueManager::updateReg(Register Reg) {
+ for (auto *DBI : DbgValues)
+ for (auto &MO : DBI->getDebugOperandsForReg(CurrentReg))
+ MO.setReg(Reg);
+ CurrentReg = Reg;
+}
+
void WebAssemblyDebugValueManager::replaceWithLocal(unsigned LocalId) {
for (auto *DBI : DbgValues) {
auto IndexType = DBI->isIndirectDebugValue()
diff --git a/llvm/lib/Target/WebAssembly/WebAssemblyDebugValueManager.h b/llvm/lib/Target/WebAssembly/WebAssemblyDebugValueManager.h
index c2dd569093044..4c63af21406e1 100644
--- a/llvm/lib/Target/WebAssembly/WebAssemblyDebugValueManager.h
+++ b/llvm/lib/Target/WebAssembly/WebAssemblyDebugValueManager.h
@@ -9,6 +9,9 @@
/// \file
/// This file contains the declaration of the WebAssembly-specific
/// manager for DebugValues associated with the specific MachineInstr.
+/// This pass currently does not handle DBG_VALUE_LISTs; they are assumed to
+/// have been set to undef in NullifyDebugValueLists pass.
+/// TODO Handle DBG_VALUE_LIST
///
//===----------------------------------------------------------------------===//
@@ -16,21 +19,25 @@
#define LLVM_LIB_TARGET_WEBASSEMBLY_WEBASSEMBLYDEBUGVALUEMANAGER_H
#include "llvm/ADT/SmallVector.h"
+#include "llvm/CodeGen/Register.h"
namespace llvm {
class MachineInstr;
class WebAssemblyDebugValueManager {
- SmallVector<MachineInstr *, 2> DbgValues;
- unsigned CurrentReg;
+ SmallVector<MachineInstr *, 1> DbgValues;
+ Register CurrentReg;
public:
- WebAssemblyDebugValueManager(MachineInstr *Instr);
+ WebAssemblyDebugValueManager(MachineInstr *Def);
void move(MachineInstr *Insert);
- void updateReg(unsigned Reg);
- void clone(MachineInstr *Insert, unsigned NewReg);
+ void clone(MachineInstr *Insert, Register NewReg);
+ // Update the register for Def and DBG_VALUEs.
+ void updateReg(Register Reg);
+ // Replace the current register in DBG_VALUEs with the given LocalId target
+ // index.
void replaceWithLocal(unsigned LocalId);
};
More information about the llvm-commits
mailing list