LLVM
8.0.1
|
Eliminate dead arguments (and return values) from functions. More...
#include "llvm/Transforms/IPO/DeadArgumentElimination.h"
Classes | |
struct | RetOrArg |
Struct that represents (part of) either a return value or a function argument. More... | |
Public Types | |
enum | Liveness { Live, MaybeLive } |
Liveness enum - During our initial pass over the program, we determine that things are either alive or maybe alive. More... | |
using | UseMap = std::multimap< RetOrArg, RetOrArg > |
using | LiveSet = std::set< RetOrArg > |
using | LiveFuncSet = std::set< const Function * > |
using | UseVector = SmallVector< RetOrArg, 5 > |
Public Member Functions | |
DeadArgumentEliminationPass (bool ShouldHackArguments_=false) | |
PreservedAnalyses | run (Module &M, ModuleAnalysisManager &) |
RetOrArg | CreateRet (const Function *F, unsigned Idx) |
Convenience wrapper. More... | |
RetOrArg | CreateArg (const Function *F, unsigned Idx) |
Convenience wrapper. More... | |
Public Attributes | |
UseMap | Uses |
This maps a return value or argument to any MaybeLive return values or arguments it uses. More... | |
LiveSet | LiveValues |
This set contains all values that have been determined to be live. More... | |
LiveFuncSet | LiveFunctions |
This set contains all values that are cannot be changed in any way. More... | |
bool | ShouldHackArguments = false |
This allows this pass to do double-duty as the dead arg hacking pass (used only by bugpoint). More... | |
Additional Inherited Members | |
Static Public Member Functions inherited from llvm::PassInfoMixin< DeadArgumentEliminationPass > | |
static StringRef | name () |
Gets the name of the pass we are mixed into. More... | |
Eliminate dead arguments (and return values) from functions.
Definition at line 39 of file DeadArgumentElimination.h.
using llvm::DeadArgumentEliminationPass::LiveFuncSet = std::set<const Function *> |
Definition at line 111 of file DeadArgumentElimination.h.
using llvm::DeadArgumentEliminationPass::LiveSet = std::set<RetOrArg> |
Definition at line 110 of file DeadArgumentElimination.h.
using llvm::DeadArgumentEliminationPass::UseMap = std::multimap<RetOrArg, RetOrArg> |
Definition at line 92 of file DeadArgumentElimination.h.
Definition at line 119 of file DeadArgumentElimination.h.
Liveness enum - During our initial pass over the program, we determine that things are either alive or maybe alive.
We don't mark anything explicitly dead (even if we know they are), since anything not alive with no registered uses (in Uses) will never be marked alive and will thus become dead in the end.
Enumerator | |
---|---|
Live | |
MaybeLive |
Definition at line 75 of file DeadArgumentElimination.h.
|
inline |
Definition at line 77 of file DeadArgumentElimination.h.
References run().
Convenience wrapper.
Definition at line 88 of file DeadArgumentElimination.h.
References llvm::DeadArgumentEliminationPass::RetOrArg::RetOrArg().
Convenience wrapper.
Definition at line 83 of file DeadArgumentElimination.h.
References llvm::DeadArgumentEliminationPass::RetOrArg::RetOrArg().
PreservedAnalyses DeadArgumentEliminationPass::run | ( | Module & | M, |
ModuleAnalysisManager & | |||
) |
Definition at line 1085 of file DeadArgumentElimination.cpp.
References llvm::PreservedAnalyses::all(), llvm::Module::begin(), llvm::dbgs(), E, llvm::Module::end(), llvm::Function::getFunctionType(), I, llvm::FunctionType::isVarArg(), LLVM_DEBUG, and llvm::PreservedAnalyses::none().
Referenced by DeadArgumentEliminationPass().
LiveFuncSet llvm::DeadArgumentEliminationPass::LiveFunctions |
This set contains all values that are cannot be changed in any way.
Definition at line 117 of file DeadArgumentElimination.h.
LiveSet llvm::DeadArgumentEliminationPass::LiveValues |
This set contains all values that have been determined to be live.
Definition at line 114 of file DeadArgumentElimination.h.
This allows this pass to do double-duty as the dead arg hacking pass (used only by bugpoint).
Definition at line 123 of file DeadArgumentElimination.h.
UseMap llvm::DeadArgumentEliminationPass::Uses |
This maps a return value or argument to any MaybeLive return values or arguments it uses.
This allows the MaybeLive values to be marked live when any of its users is marked live. For example (indices are left out for clarity):
Definition at line 108 of file DeadArgumentElimination.h.