Lines Matching defs:SROA
1 //===- SROA.cpp - Scalar Replacement Of Aggregates ------------------------===//
25 #include "llvm/Transforms/Scalar/SROA.h"
119 /// Disable running mem2reg during SROA in order to test or debug SROA.
170 class SROA {
193 /// viable for SROA after a round of promotion takes place. In those cases,
234 SROA(LLVMContext *C, DomTreeUpdater *DTU, AssumptionCache *AC,
1391 /// Disable SROA entirely if there are unhandled users of the alloca.
1700 SROA::isSafeSelectToSpeculate(SelectInst &SI, bool PreserveCFG) {
2615 SROA &Pass;
2673 AllocaSliceRewriter(const DataLayout &DL, AllocaSlices &AS, SROA &Pass,
2765 // Look for an SROA slice index.
2776 // Strip any SROA suffixes as well.
3295 // within a single alloca before SROA ran, or with transfers that have
4305 bool SROA::presplitLoadsAndStores(AllocaInst &AI, AllocaSlices &AS) {
4329 // a separate alloca. Put another way, the effectiveness of SROA would be
4332 // SROA is tasked with! Sadly, to not have this discrepancy we would have
4781 /// This routine drives both of the rewriting goals of the SROA pass. It tries
4789 AllocaInst *SROA::rewritePartition(AllocaInst &AI, AllocaSlices &AS,
4850 // out-of-bounds access (e.g. @PR35657 function in SROA/basictest.ll).
5205 bool SROA::splitAlloca(AllocaInst &AI, AllocaSlices &AS) {
5409 void SROA::clobberUse(Use &U) {
5423 /// Analyze an alloca for SROA.
5429 SROA::runOnAlloca(AllocaInst &AI) {
5433 LLVM_DEBUG(dbgs() << "SROA alloca: " << AI << "\n");
5511 bool SROA::deleteDeadInstructions(
5554 bool SROA::promoteAllocas(Function &F) {
5571 std::pair<bool /*Changed*/, bool /*CFGChanged*/> SROA::runSROA(Function &F) {
5572 LLVM_DEBUG(dbgs() << "SROA function: " << F.getName() << "\n");
5637 SROA(&F.getContext(), &DTU, &AC, PreserveCFG).runSROA(F);
5659 /// A legacy pass for the legacy pass manager that wraps the \c SROA pass.
5680 SROA(&F.getContext(), &DTU, &AC, PreserveCFG).runSROA(F);
5691 StringRef getPassName() const override { return "SROA"; }