14#ifndef LLVM_TRANSFORMS_SCALAR_MEMCPYOPTIMIZER_H
15#define LLVM_TRANSFORMS_SCALAR_MEMCPYOPTIMIZER_H
29class EarliestEscapeAnalysis;
36class MemorySSAUpdater;
38class PostDominatorTree;
40class TargetLibraryInfo;
82 bool processByValArgument(
CallBase &CB,
unsigned ArgNo);
83 bool processImmutArgument(
CallBase &CB,
unsigned ArgNo);
MachineBasicBlock MachineBasicBlock::iterator DebugLoc DL
early cse Early CSE w MemorySSA
This header defines various interfaces for pass management in LLVM.
an instruction to allocate memory on the stack
A container for analyses that lazily runs them and caches their results.
A cache of @llvm.assume calls within a function.
InstListType::iterator iterator
Instruction iterators...
This class is a wrapper over an AAResults, and it is intended to be used only when there are no IR ch...
Base class for all callable instructions (InvokeInst and CallInst) Holds everything related to callin...
This class represents a function call, abstracting a target machine's calling convention.
A parsed version of the target data layout string in and methods for querying it.
Concrete subclass of DominatorTreeBase that is used to compute a normal dominator tree.
Context-sensitive CaptureAnalysis provider, which computes and caches the earliest common dominator c...
An instruction for reading from memory.
This class wraps the llvm.memcpy intrinsic.
PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM)
bool runImpl(Function &F, TargetLibraryInfo *TLI, AAResults *AA, AssumptionCache *AC, DominatorTree *DT, PostDominatorTree *PDT, MemorySSA *MSSA)
This class wraps the llvm.memmove intrinsic.
This class wraps the llvm.memset and llvm.memset.inline intrinsics.
Encapsulates MemorySSA, including all data associated with memory accesses.
PostDominatorTree Class - Concrete subclass of DominatorTree that is used to compute the post-dominat...
A set of analyses that are preserved following a run of a transformation pass.
An instruction for storing to memory.
Provides information about what library functions are available for the current target.
LLVM Value Representation.
This is an optimization pass for GlobalISel generic memory operations.
This struct is a compact representation of a valid (non-zero power of two) alignment.
A CRTP mix-in to automatically provide informational APIs needed for passes.