LLVM 18.0.0git
Classes | Namespaces | Typedefs | Enumerations
SROA.h File Reference

This file provides the interface for LLVM's Scalar Replacement of Aggregates pass. More...

#include "llvm/ADT/MapVector.h"
#include "llvm/ADT/PointerIntPair.h"
#include "llvm/ADT/SetVector.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/IR/PassManager.h"
#include "llvm/IR/ValueHandle.h"
#include <variant>
#include <vector>

Go to the source code of this file.

Classes

class  llvm::sroa::SelectHandSpeculativity
 
class  llvm::SROAPass
 An optimization pass providing Scalar Replacement of Aggregates. More...
 

Namespaces

namespace  llvm
 This is an optimization pass for GlobalISel generic memory operations.
 
namespace  llvm::sroa
 A private "module" namespace for types and utilities used by SROA.
 

Typedefs

using llvm::sroa::PossiblySpeculatableLoad = PointerIntPair< LoadInst *, 2, sroa::SelectHandSpeculativity >
 
using llvm::sroa::UnspeculatableStore = StoreInst *
 
using llvm::sroa::RewriteableMemOp = std::variant< PossiblySpeculatableLoad, UnspeculatableStore >
 
using llvm::sroa::RewriteableMemOps = SmallVector< RewriteableMemOp, 2 >
 

Enumerations

enum class  llvm::SROAOptions : bool { llvm::ModifyCFG , llvm::PreserveCFG }
 

Detailed Description

This file provides the interface for LLVM's Scalar Replacement of Aggregates pass.

This pass provides both aggregate splitting and the primary SSA formation used in the compiler.

Definition in file SROA.h.