LLVM 22.0.0git
llvm::DeadArgumentEliminationPass Class Reference

Eliminate dead arguments (and return values) from functions. More...

#include "llvm/Transforms/IPO/DeadArgumentElimination.h"

Inheritance diagram for llvm::DeadArgumentEliminationPass:
[legend]

Classes

struct  RetOrArg
 Struct that represents (part of) either a return value or a function argument. More...

Public Types

enum  Liveness { Live , MaybeLive }
 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 FuncSet = 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.
RetOrArg createArg (const Function *F, unsigned Idx)
 Convenience wrapper.
Public Member Functions inherited from llvm::PassInfoMixin< DeadArgumentEliminationPass >
void printPipeline (raw_ostream &OS, function_ref< StringRef(StringRef)> MapClassName2PassName)

Public Attributes

UseMap Uses
 This maps a return value or argument to any MaybeLive return values or arguments it uses.
LiveSet LiveValues
 This set contains all values that have been determined to be live.
FuncSet FrozenFunctions
 This set contains all functions that cannot be changed in any way.
FuncSet FrozenRetTyFunctions
 This set contains all functions that cannot change return type;.
bool ShouldHackArguments = false
 This allows this pass to do double-duty as the dead arg hacking pass (used only by bugpoint).

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.

Detailed Description

Eliminate dead arguments (and return values) from functions.

Definition at line 38 of file DeadArgumentElimination.h.

Member Typedef Documentation

◆ FuncSet

◆ LiveSet

◆ UseMap

Definition at line 90 of file DeadArgumentElimination.h.

◆ UseVector

Member Enumeration Documentation

◆ Liveness

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 73 of file DeadArgumentElimination.h.

Constructor & Destructor Documentation

◆ DeadArgumentEliminationPass()

llvm::DeadArgumentEliminationPass::DeadArgumentEliminationPass ( bool ShouldHackArguments = false)
inline

Definition at line 75 of file DeadArgumentElimination.h.

References ShouldHackArguments.

Member Function Documentation

◆ createArg()

RetOrArg llvm::DeadArgumentEliminationPass::createArg ( const Function * F,
unsigned Idx )
inline

Convenience wrapper.

Definition at line 86 of file DeadArgumentElimination.h.

References F.

◆ createRet()

RetOrArg llvm::DeadArgumentEliminationPass::createRet ( const Function * F,
unsigned Idx )
inline

Convenience wrapper.

Definition at line 81 of file DeadArgumentElimination.h.

References F.

◆ run()

Member Data Documentation

◆ FrozenFunctions

FuncSet llvm::DeadArgumentEliminationPass::FrozenFunctions

This set contains all functions that cannot be changed in any way.

Definition at line 115 of file DeadArgumentElimination.h.

◆ FrozenRetTyFunctions

FuncSet llvm::DeadArgumentEliminationPass::FrozenRetTyFunctions

This set contains all functions that cannot change return type;.

Definition at line 118 of file DeadArgumentElimination.h.

◆ LiveValues

LiveSet llvm::DeadArgumentEliminationPass::LiveValues

This set contains all values that have been determined to be live.

Definition at line 112 of file DeadArgumentElimination.h.

◆ ShouldHackArguments

bool llvm::DeadArgumentEliminationPass::ShouldHackArguments = false

This allows this pass to do double-duty as the dead arg hacking pass (used only by bugpoint).

Definition at line 124 of file DeadArgumentElimination.h.

Referenced by DeadArgumentEliminationPass().

◆ Uses

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):

  • 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.

Definition at line 106 of file DeadArgumentElimination.h.


The documentation for this class was generated from the following files: