class DeadArgumentEliminationPass
Declaration
class DeadArgumentEliminationPass : public PassInfoMixin { /* full declaration omitted */ };
Description
Eliminate dead arguments (and return values) from functions.
Declared at: llvm/include/llvm/Transforms/IPO/DeadArgumentElimination.h:38
Inherits from: PassInfoMixin
Member Variables
- public llvm::DeadArgumentEliminationPass::UseMap 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): - Uses[ret F] = ret G This means that F calls G, and F returns the value returned by G. - Uses[arg F] = ret G This means that some function calls G and passes its result as an argument to F. - Uses[ret F] = arg F This means that F returns one of its own arguments. - Uses[arg F] = arg G This means that G calls F and passes one of its own (G's) arguments directly to F.
- public llvm::DeadArgumentEliminationPass::LiveSet LiveValues
- This set contains all values that have been determined to be live.
- public llvm::DeadArgumentEliminationPass::LiveFuncSet LiveFunctions
- This set contains all values that are cannot be changed in any way.
- public bool ShouldHackArguments = false
- This allows this pass to do double-duty as the dead arg hacking pass (used only by bugpoint).
Method Overview
- public DeadArgumentEliminationPass(bool ShouldHackArguments = false)
- public llvm::DeadArgumentEliminationPass::RetOrArg createArg(const llvm::Function * F, unsigned int Idx)
- public llvm::DeadArgumentEliminationPass::RetOrArg createRet(const llvm::Function * F, unsigned int Idx)
- private bool deleteDeadVarargs(llvm::Function & F)
- private bool isLive(const llvm::DeadArgumentEliminationPass::RetOrArg & RA)
- private llvm::DeadArgumentEliminationPass::Liveness markIfNotLive(llvm::DeadArgumentEliminationPass::RetOrArg Use, llvm::DeadArgumentEliminationPass::UseVector & MaybeLiveUses)
- private void markLive(const llvm::DeadArgumentEliminationPass::RetOrArg & RA)
- private void markLive(const llvm::Function & F)
- private void markValue(const llvm::DeadArgumentEliminationPass::RetOrArg & RA, llvm::DeadArgumentEliminationPass::Liveness L, const llvm::DeadArgumentEliminationPass::UseVector & MaybeLiveUses)
- private void propagateLiveness(const llvm::DeadArgumentEliminationPass::RetOrArg & RA)
- private bool removeDeadArgumentsFromCallers(llvm::Function & F)
- private bool removeDeadStuffFromFunction(llvm::Function * F)
- public llvm::PreservedAnalyses run(llvm::Module & M, llvm::ModuleAnalysisManager &)
- private void surveyFunction(const llvm::Function & F)
- private llvm::DeadArgumentEliminationPass::Liveness surveyUse(const llvm::Use * U, llvm::DeadArgumentEliminationPass::UseVector & MaybeLiveUses, unsigned int RetValNum = -1U)
- private llvm::DeadArgumentEliminationPass::Liveness surveyUses(const llvm::Value * V, llvm::DeadArgumentEliminationPass::UseVector & MaybeLiveUses)
Methods
¶DeadArgumentEliminationPass(
bool ShouldHackArguments = false)
DeadArgumentEliminationPass(
bool ShouldHackArguments = false)
Declared at: llvm/include/llvm/Transforms/IPO/DeadArgumentElimination.h:75
Parameters
- bool ShouldHackArguments = false
¶llvm::DeadArgumentEliminationPass::RetOrArg
createArg(const llvm::Function* F,
unsigned int Idx)
llvm::DeadArgumentEliminationPass::RetOrArg
createArg(const llvm::Function* F,
unsigned int Idx)
Description
Convenience wrapper
Declared at: llvm/include/llvm/Transforms/IPO/DeadArgumentElimination.h:86
Parameters
- const llvm::Function* F
- unsigned int Idx
¶llvm::DeadArgumentEliminationPass::RetOrArg
createRet(const llvm::Function* F,
unsigned int Idx)
llvm::DeadArgumentEliminationPass::RetOrArg
createRet(const llvm::Function* F,
unsigned int Idx)
Description
Convenience wrapper
Declared at: llvm/include/llvm/Transforms/IPO/DeadArgumentElimination.h:81
Parameters
- const llvm::Function* F
- unsigned int Idx
¶bool deleteDeadVarargs(llvm::Function& F)
bool deleteDeadVarargs(llvm::Function& F)
Declared at: llvm/include/llvm/Transforms/IPO/DeadArgumentElimination.h:137
Parameters
¶bool isLive(
const llvm::DeadArgumentEliminationPass::
RetOrArg& RA)
bool isLive(
const llvm::DeadArgumentEliminationPass::
RetOrArg& RA)
Declared at: llvm/include/llvm/Transforms/IPO/DeadArgumentElimination.h:130
Parameters
¶llvm::DeadArgumentEliminationPass::Liveness
markIfNotLive(
llvm::DeadArgumentEliminationPass::RetOrArg
Use,
llvm::DeadArgumentEliminationPass::UseVector&
MaybeLiveUses)
llvm::DeadArgumentEliminationPass::Liveness
markIfNotLive(
llvm::DeadArgumentEliminationPass::RetOrArg
Use,
llvm::DeadArgumentEliminationPass::UseVector&
MaybeLiveUses)
Declared at: llvm/include/llvm/Transforms/IPO/DeadArgumentElimination.h:124
Parameters
- llvm::DeadArgumentEliminationPass::RetOrArg Use
- llvm::DeadArgumentEliminationPass::UseVector& MaybeLiveUses
¶void markLive(
const llvm::DeadArgumentEliminationPass::
RetOrArg& RA)
void markLive(
const llvm::DeadArgumentEliminationPass::
RetOrArg& RA)
Declared at: llvm/include/llvm/Transforms/IPO/DeadArgumentElimination.h:133
Parameters
¶void markLive(const llvm::Function& F)
void markLive(const llvm::Function& F)
Declared at: llvm/include/llvm/Transforms/IPO/DeadArgumentElimination.h:134
Parameters
- const llvm::Function& F
¶void markValue(
const llvm::DeadArgumentEliminationPass::
RetOrArg& RA,
llvm::DeadArgumentEliminationPass::Liveness L,
const llvm::DeadArgumentEliminationPass::
UseVector& MaybeLiveUses)
void markValue(
const llvm::DeadArgumentEliminationPass::
RetOrArg& RA,
llvm::DeadArgumentEliminationPass::Liveness L,
const llvm::DeadArgumentEliminationPass::
UseVector& MaybeLiveUses)
Declared at: llvm/include/llvm/Transforms/IPO/DeadArgumentElimination.h:131
Parameters
- const llvm::DeadArgumentEliminationPass::RetOrArg& RA
- llvm::DeadArgumentEliminationPass::Liveness L
- const llvm::DeadArgumentEliminationPass:: UseVector& MaybeLiveUses
¶void propagateLiveness(
const llvm::DeadArgumentEliminationPass::
RetOrArg& RA)
void propagateLiveness(
const llvm::DeadArgumentEliminationPass::
RetOrArg& RA)
Declared at: llvm/include/llvm/Transforms/IPO/DeadArgumentElimination.h:135
Parameters
¶bool removeDeadArgumentsFromCallers(
llvm::Function& F)
bool removeDeadArgumentsFromCallers(
llvm::Function& F)
Declared at: llvm/include/llvm/Transforms/IPO/DeadArgumentElimination.h:138
Parameters
¶bool removeDeadStuffFromFunction(
llvm::Function* F)
bool removeDeadStuffFromFunction(
llvm::Function* F)
Declared at: llvm/include/llvm/Transforms/IPO/DeadArgumentElimination.h:136
Parameters
¶llvm::PreservedAnalyses run(
llvm::Module& M,
llvm::ModuleAnalysisManager&)
llvm::PreservedAnalyses run(
llvm::Module& M,
llvm::ModuleAnalysisManager&)
Declared at: llvm/include/llvm/Transforms/IPO/DeadArgumentElimination.h:78
Parameters
¶void surveyFunction(const llvm::Function& F)
void surveyFunction(const llvm::Function& F)
Declared at: llvm/include/llvm/Transforms/IPO/DeadArgumentElimination.h:129
Parameters
- const llvm::Function& F
¶llvm::DeadArgumentEliminationPass::Liveness
surveyUse(
const llvm::Use* U,
llvm::DeadArgumentEliminationPass::UseVector&
MaybeLiveUses,
unsigned int RetValNum = -1U)
llvm::DeadArgumentEliminationPass::Liveness
surveyUse(
const llvm::Use* U,
llvm::DeadArgumentEliminationPass::UseVector&
MaybeLiveUses,
unsigned int RetValNum = -1U)
Declared at: llvm/include/llvm/Transforms/IPO/DeadArgumentElimination.h:125
Parameters
- const llvm::Use* U
- llvm::DeadArgumentEliminationPass::UseVector& MaybeLiveUses
- unsigned int RetValNum = -1U
¶llvm::DeadArgumentEliminationPass::Liveness
surveyUses(
const llvm::Value* V,
llvm::DeadArgumentEliminationPass::UseVector&
MaybeLiveUses)
llvm::DeadArgumentEliminationPass::Liveness
surveyUses(
const llvm::Value* V,
llvm::DeadArgumentEliminationPass::UseVector&
MaybeLiveUses)
Declared at: llvm/include/llvm/Transforms/IPO/DeadArgumentElimination.h:127
Parameters
- const llvm::Value* V
- llvm::DeadArgumentEliminationPass::UseVector& MaybeLiveUses