LLVM 20.0.0git
Macros | Functions
WebAssemblyRegColoring.cpp File Reference

This file implements a virtual register coloring pass. More...

#include "WebAssembly.h"
#include "WebAssemblyMachineFunctionInfo.h"
#include "llvm/CodeGen/LiveIntervals.h"
#include "llvm/CodeGen/MachineBlockFrequencyInfo.h"
#include "llvm/CodeGen/MachineRegisterInfo.h"
#include "llvm/CodeGen/Passes.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/raw_ostream.h"

Go to the source code of this file.

Macros

#define DEBUG_TYPE   "wasm-reg-coloring"
 

Functions

 INITIALIZE_PASS (WebAssemblyRegColoring, DEBUG_TYPE, "Minimize number of registers used", false, false) FunctionPass *llvm
 
static float computeWeight (const MachineRegisterInfo *MRI, const MachineBlockFrequencyInfo *MBFI, unsigned VReg)
 
static DenseMap< Register, std::vector< std::pair< SlotIndex, MachineInstr * > > > buildVRegToDbgValueMap (MachineFunction &MF, const LiveIntervals *Liveness)
 
static void undefInvalidDbgValues (const LiveIntervals *Liveness, ArrayRef< SmallVector< LiveInterval *, 4 > > Assignments, DenseMap< Register, std::vector< std::pair< SlotIndex, MachineInstr * > > > &DbgVRegToValues)
 

Detailed Description

This file implements a virtual register coloring pass.

WebAssembly doesn't have a fixed number of registers, but it is still desirable to minimize the total number of registers used in each function.

This code is modeled after lib/CodeGen/StackSlotColoring.cpp.

Definition in file WebAssemblyRegColoring.cpp.

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "wasm-reg-coloring"

Definition at line 29 of file WebAssemblyRegColoring.cpp.

Function Documentation

◆ buildVRegToDbgValueMap()

static DenseMap< Register, std::vector< std::pair< SlotIndex, MachineInstr * > > > buildVRegToDbgValueMap ( MachineFunction MF,
const LiveIntervals Liveness 
)
static

◆ computeWeight()

static float computeWeight ( const MachineRegisterInfo MRI,
const MachineBlockFrequencyInfo MBFI,
unsigned  VReg 
)
static

Definition at line 65 of file WebAssemblyRegColoring.cpp.

References llvm::LiveIntervals::getSpillWeight(), and MRI.

◆ INITIALIZE_PASS()

INITIALIZE_PASS ( WebAssemblyRegColoring  ,
DEBUG_TYPE  ,
"Minimize number of registers used"  ,
false  ,
false   
)

Definition at line 57 of file WebAssemblyRegColoring.cpp.

◆ undefInvalidDbgValues()

static void undefInvalidDbgValues ( const LiveIntervals Liveness,
ArrayRef< SmallVector< LiveInterval *, 4 > >  Assignments,
DenseMap< Register, std::vector< std::pair< SlotIndex, MachineInstr * > > > &  DbgVRegToValues 
)
static