LLVM 17.0.0git
Public Member Functions | Friends | List of all members
llvm::SROAPass Class Reference

An optimization pass providing Scalar Replacement of Aggregates. More...

#include "llvm/Transforms/Scalar/SROA.h"

Inheritance diagram for llvm::SROAPass:
Inheritance graph
[legend]

Public Member Functions

 SROAPass (SROAOptions PreserveCFG)
 If PreserveCFG is set, then the pass is not allowed to modify CFG in any way, even if it would update CFG analyses.
 
PreservedAnalyses run (Function &F, FunctionAnalysisManager &AM)
 Run the pass over the function.
 
void printPipeline (raw_ostream &OS, function_ref< StringRef(StringRef)> MapClassName2PassName)
 
- Public Member Functions inherited from llvm::PassInfoMixin< SROAPass >
void printPipeline (raw_ostream &OS, function_ref< StringRef(StringRef)> MapClassName2PassName)
 

Friends

class sroa::AllocaSliceRewriter
 
class sroa::SROALegacyPass
 

Additional Inherited Members

- Static Public Member Functions inherited from llvm::PassInfoMixin< SROAPass >
static StringRef name ()
 Gets the name of the pass we are mixed into.
 

Detailed Description

An optimization pass providing Scalar Replacement of Aggregates.

This pass takes allocations which can be completely analyzed (that is, they don't escape) and tries to turn them into scalar SSA values. There are a few steps to this process.

1) It takes allocations of aggregates and analyzes the ways in which they are used to try to split them into smaller allocations, ideally of a single scalar data type. It will split up memcpy and memset accesses as necessary and try to isolate individual scalar accesses. 2) It will transform accesses into forms which are suitable for SSA value promotion. This can be replacing a memset with a scalar store of an integer value, or it can involve speculating operations on a PHI or select to be a PHI or select of the results. 3) Finally, this will try to detect a pattern of accesses which map cleanly onto insert and extract operations on a vector value, and convert them to this form. By doing so, it will enable promotion of vector aggregates to SSA vector values.

Definition at line 95 of file SROA.h.

Constructor & Destructor Documentation

◆ SROAPass()

SROAPass::SROAPass ( SROAOptions  PreserveCFG)

If PreserveCFG is set, then the pass is not allowed to modify CFG in any way, even if it would update CFG analyses.

Definition at line 5166 of file SROA.cpp.

Member Function Documentation

◆ printPipeline()

void SROAPass::printPipeline ( raw_ostream OS,
function_ref< StringRef(StringRef)>  MapClassName2PassName 
)

Definition at line 5159 of file SROA.cpp.

References OS, and llvm::PreserveCFG.

◆ run()

PreservedAnalyses SROAPass::run ( Function F,
FunctionAnalysisManager AM 
)

Run the pass over the function.

Definition at line 5153 of file SROA.cpp.

References F, llvm::AnalysisManager< IRUnitT, ExtraArgTs >::getResult(), and runImpl().

Friends And Related Function Documentation

◆ sroa::AllocaSliceRewriter

friend class sroa::AllocaSliceRewriter
friend

Definition at line 170 of file SROA.h.

◆ sroa::SROALegacyPass

friend class sroa::SROALegacyPass
friend

Definition at line 171 of file SROA.h.


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