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)

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)

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)

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)

Declared at: llvm/include/llvm/Transforms/IPO/DeadArgumentElimination.h:137

Parameters

llvm::Function& F

bool isLive(
    const llvm::DeadArgumentEliminationPass::
        RetOrArg& RA)

Declared at: llvm/include/llvm/Transforms/IPO/DeadArgumentElimination.h:130

Parameters

const llvm::DeadArgumentEliminationPass::RetOrArg& RA

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)

Declared at: llvm/include/llvm/Transforms/IPO/DeadArgumentElimination.h:133

Parameters

const llvm::DeadArgumentEliminationPass::RetOrArg& RA

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)

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)

Declared at: llvm/include/llvm/Transforms/IPO/DeadArgumentElimination.h:135

Parameters

const llvm::DeadArgumentEliminationPass::RetOrArg& RA

bool removeDeadArgumentsFromCallers(
    llvm::Function& F)

Declared at: llvm/include/llvm/Transforms/IPO/DeadArgumentElimination.h:138

Parameters

llvm::Function& F

bool removeDeadStuffFromFunction(
    llvm::Function* F)

Declared at: llvm/include/llvm/Transforms/IPO/DeadArgumentElimination.h:136

Parameters

llvm::Function* F

llvm::PreservedAnalyses run(
    llvm::Module& M,
    llvm::ModuleAnalysisManager&)

Declared at: llvm/include/llvm/Transforms/IPO/DeadArgumentElimination.h:78

Parameters

llvm::Module& M
llvm::ModuleAnalysisManager&

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)

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)

Declared at: llvm/include/llvm/Transforms/IPO/DeadArgumentElimination.h:127

Parameters

const llvm::Value* V
llvm::DeadArgumentEliminationPass::UseVector& MaybeLiveUses