[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