|
LLVM 24.0.0git
|
Late peephole optimizations for WebAssembly. More...
#include "MCTargetDesc/WebAssemblyMCTargetDesc.h"#include "WebAssembly.h"#include "WebAssemblyMachineFunctionInfo.h"#include "WebAssemblySubtarget.h"#include "WebAssemblyUtilities.h"#include "llvm/Analysis/TargetLibraryInfo.h"#include "llvm/CodeGen/LibcallLoweringInfo.h"#include "llvm/CodeGen/MachineFunctionAnalysisManager.h"#include "llvm/CodeGen/MachineFunctionPass.h"#include "llvm/CodeGen/MachineInstrBuilder.h"#include "llvm/CodeGen/MachinePassManager.h"#include "llvm/CodeGen/MachineRegisterInfo.h"#include "llvm/IR/Analysis.h"#include "llvm/Support/ErrorHandling.h"Go to the source code of this file.
Macros | |
| #define | DEBUG_TYPE "wasm-peephole" |
Functions | |
| INITIALIZE_PASS (WebAssemblyPeepholeLegacy, DEBUG_TYPE, "WebAssembly peephole optimizations", false, false) FunctionPass *llvm | |
| static bool | maybeRewriteToDrop (unsigned OldReg, unsigned NewReg, MachineOperand &MO, WebAssemblyFunctionInfo &MFI, MachineRegisterInfo &MRI) |
| If desirable, rewrite NewReg to a drop register. | |
| static bool | maybeRewriteToFallthrough (MachineInstr &MI, MachineBasicBlock &MBB, const MachineFunction &MF, WebAssemblyFunctionInfo &MFI, MachineRegisterInfo &MRI, const WebAssemblyInstrInfo &TII) |
| static bool | peephole (MachineFunction &MF, TargetLibraryInfo &LibInfo, const LibcallLoweringInfo &LibcallLowering) |
Variables | |
| static cl::opt< bool > | DisableWebAssemblyFallthroughReturnOpt ("disable-wasm-fallthrough-return-opt", cl::Hidden, cl::desc("WebAssembly: Disable fallthrough-return optimizations."), cl::init(false)) |
Late peephole optimizations for WebAssembly.
Definition in file WebAssemblyPeephole.cpp.
| #define DEBUG_TYPE "wasm-peephole" |
Definition at line 30 of file WebAssemblyPeephole.cpp.
| INITIALIZE_PASS | ( | WebAssemblyPeepholeLegacy | , |
| DEBUG_TYPE | , | ||
| "WebAssembly peephole optimizations" | , | ||
| false | , | ||
| false | ) |
Definition at line 59 of file WebAssemblyPeephole.cpp.
References llvm::createWebAssemblyPeepholeLegacyPass(), and DEBUG_TYPE.
|
static |
If desirable, rewrite NewReg to a drop register.
Definition at line 67 of file WebAssemblyPeephole.cpp.
References Changed, llvm::MachineRegisterInfo::createVirtualRegister(), llvm::MachineRegisterInfo::getRegClass(), llvm::MachineOperand::setIsDead(), llvm::MachineOperand::setReg(), and llvm::WebAssemblyFunctionInfo::stackifyVReg().
Referenced by peephole().
|
static |
Definition at line 81 of file WebAssemblyPeephole.cpp.
References llvm::MachineInstrBuilder::addReg(), assert(), llvm::MachineFunction::back(), llvm::BuildMI(), llvm::MachineRegisterInfo::createVirtualRegister(), DisableWebAssemblyFallthroughReturnOpt, llvm::WebAssembly::getCopyOpcodeForRegClass(), llvm::MachineRegisterInfo::getRegClass(), llvm::WebAssemblyFunctionInfo::isVRegStackified(), MBB, MI, Reg, llvm::WebAssemblyFunctionInfo::stackifyVReg(), and TII.
Referenced by peephole().
|
static |
Definition at line 118 of file WebAssemblyPeephole.cpp.
References Changed, llvm::dbgs(), llvm::MachineFunction::getInfo(), llvm::LibcallLoweringInfo::getLibcallImpl(), llvm::RTLIB::RuntimeLibcallsInfo::getLibcallImplName(), llvm::TargetLibraryInfo::getLibFunc(), llvm::MachineFunction::getName(), llvm::MachineOperand::getReg(), llvm::MachineFunction::getRegInfo(), llvm::MachineFunction::getSubtarget(), llvm::MachineOperand::getSymbolName(), llvm::MachineOperand::isSymbol(), LLVM_DEBUG, maybeRewriteToDrop(), maybeRewriteToFallthrough(), MBB, MI, llvm::report_fatal_error(), and TII.
Referenced by llvm::WebAssemblyPeepholePass::run().
|
static |
Referenced by maybeRewriteToFallthrough().