|
LLVM 24.0.0git
|
Data structure to hold cached (LLVM-IR) information. More...
#include "llvm/Transforms/IPO/Attributor.h"
Public Types | |
| using | InstructionVectorTy = SmallVector<Instruction *, 8> |
| A vector type to hold instructions. | |
| using | OpcodeInstMapTy |
| A map type from opcodes to instructions with this opcode. | |
Public Member Functions | |
| InformationCache (const Module &M, AnalysisGetter &AG, BumpPtrAllocator &Allocator, SetVector< Function * > *CGSCC, bool UseExplorer=true) | |
| virtual | ~InformationCache () |
| OpcodeInstMapTy & | getOpcodeInstMapForFunction (const Function &F) |
Return the map that relates "interesting" opcodes with all instructions with that opcode in F. | |
| InstructionVectorTy & | getReadOrWriteInstsForFunction (const Function &F) |
Return the instructions in F that may read or write memory. | |
| MustBeExecutedContextExplorer * | getMustBeExecutedContextExplorer () |
| Return MustBeExecutedContextExplorer. | |
| TargetLibraryInfo * | getTargetLibraryInfoForFunction (const Function &F) |
Return TargetLibraryInfo for function F. | |
| bool | isKernel (const Function &F) |
Return true if F has the "kernel" function attribute. | |
| bool | isInvolvedInMustTailCall (const Argument &Arg) |
Return true if Arg is involved in a must-tail call, thus the argument of the caller or callee. | |
| bool | isOnlyUsedByAssume (const Instruction &I) |
| void | invalidateAnalyses () |
| Invalidates the cached analyses. | |
| template<typename AP> | |
| AP::Result * | getAnalysisResultForFunction (const Function &F, bool CachedOnly=false) |
Return the analysis result from a pass AP for function F. | |
| const Module & | getModule () const |
| const DataLayout & | getDL () const |
| Return datalayout used in the module. | |
| const RetainedKnowledgeMap & | getKnowledgeMap () const |
| Return the map conaining all the knowledge we have from llvm.assumes. | |
| const AA::InstExclusionSetTy * | getOrCreateUniqueBlockExecutionSet (const AA::InstExclusionSetTy *BES) |
Given BES, return a uniqued version. | |
| bool | stackIsAccessibleByOtherThreads () |
| Return true if the stack (llvm::Alloca) can be accessed by other threads. | |
| bool | IsTargetGPU () const |
| Return true if the target is a GPU. | |
| LLVM_ABI ArrayRef< Function * > | getIndirectlyCallableFunctions (Attributor &A) const |
| Return all functions that might be called indirectly, only valid for closed world modules (see isClosedWorldModule). | |
| bool | isExactOrInlineable (const Function &F) const |
Return true if F has an exact definition or is inlineable. | |
| LLVM_ABI std::optional< unsigned > | getFlatAddressSpace () const |
| Return the flat address space if the associated target has. | |
| virtual unsigned | getMaxAddrSpace () const |
Static Public Member Functions | |
| template<typename CBTy> | |
| static void | foreachUse (Function &F, CBTy CB, bool LookThroughConstantExprUses=true) |
Apply CB to all uses of F. | |
Public Attributes | |
| const SetVector< Function * > *const | CGSCC = nullptr |
| The CG-SCC the pass is run on, or nullptr if it is a module pass. | |
Friends | |
| struct | Attributor |
| Give the Attributor access to the members so Attributor::identifyDefaultAbstractAttributes(...) can initialize them. | |
Data structure to hold cached (LLVM-IR) information.
All attributes are given an InformationCache object at creation time to avoid inspection of the IR by all of them individually. This default InformationCache will hold information required by 'default' attributes, thus the ones deduced when Attributor::identifyDefaultAbstractAttributes(..) is called.
If custom abstract attributes, registered manually through Attributor::registerAA(...), need more information, especially if it is not reusable, it is advised to inherit from the InformationCache and cast the instance down in the abstract attributes.
Definition at line 1159 of file Attributor.h.
A vector type to hold instructions.
Definition at line 1220 of file Attributor.h.
A map type from opcodes to instructions with this opcode.
Definition at line 1223 of file Attributor.h.
|
inline |
Definition at line 1160 of file Attributor.h.
|
inlinevirtual |
Definition at line 1181 of file Attributor.h.
|
inlinestatic |
Apply CB to all uses of F.
If LookThroughConstantExprUses is true, constant expression users are not given to CB but their uses are traversed transitively.
Definition at line 1198 of file Attributor.h.
References llvm::cast(), F, llvm::isa(), llvm::make_pointer_range(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), and llvm::SmallVectorTemplateCommon< T, typename >::size().
|
inline |
Return the analysis result from a pass AP for function F.
Definition at line 1274 of file Attributor.h.
References F.
Referenced by llvm::AANonNull::isImpliedByIR(), and llvm::AA::isValidAtPosition().
|
inline |
Return datalayout used in the module.
Definition at line 1282 of file Attributor.h.
| std::optional< unsigned > InformationCache::getFlatAddressSpace | ( | ) | const |
Return the flat address space if the associated target has.
Definition at line 3398 of file Attributor.cpp.
References IsTargetGPU().
| ArrayRef< Function * > InformationCache::getIndirectlyCallableFunctions | ( | Attributor & | A | ) | const |
Return all functions that might be called indirectly, only valid for closed world modules (see isClosedWorldModule).
Definition at line 3393 of file Attributor.cpp.
References A(), assert(), and Attributor.
|
inline |
Return the map conaining all the knowledge we have from llvm.assumes.
Definition at line 1285 of file Attributor.h.
Referenced by llvm::Attributor::getAttrsFromAssumes().
|
inlinevirtual |
Definition at line 1325 of file Attributor.h.
Definition at line 1279 of file Attributor.h.
|
inline |
Return MustBeExecutedContextExplorer.
Definition at line 1238 of file Attributor.h.
Referenced by llvm::Attributor::getAttrsFromAssumes().
|
inline |
Return the map that relates "interesting" opcodes with all instructions with that opcode in F.
Definition at line 1228 of file Attributor.h.
References F.
|
inline |
Given BES, return a uniqued version.
Definition at line 1289 of file Attributor.h.
References assert(), llvm::SmallPtrSetImpl< PtrType >::find(), and llvm::Success.
|
inline |
Return the instructions in F that may read or write memory.
Definition at line 1233 of file Attributor.h.
References F.
|
inline |
Return TargetLibraryInfo for function F.
Definition at line 1243 of file Attributor.h.
References F.
|
inline |
Invalidates the cached analyses.
Valid only when using the new pass manager.
Definition at line 1270 of file Attributor.h.
Return true if F has an exact definition or is inlineable.
This is computed once when the information of F is initialized. For functions that are not initialized yet, only the definition is checked, as InlineableFunctions is also only filled on initialization.
Definition at line 1316 of file Attributor.h.
References F.
Return true if Arg is involved in a must-tail call, thus the argument of the caller or callee.
Definition at line 1255 of file Attributor.h.
References llvm::Argument::getParent().
Return true if F has the "kernel" function attribute.
Definition at line 1248 of file Attributor.h.
References F.
|
inline |
Definition at line 1260 of file Attributor.h.
|
inline |
Return true if the target is a GPU.
Definition at line 1304 of file Attributor.h.
Referenced by getFlatAddressSpace(), and stackIsAccessibleByOtherThreads().
|
inline |
Return true if the stack (llvm::Alloca) can be accessed by other threads.
Definition at line 1301 of file Attributor.h.
References IsTargetGPU().
Referenced by llvm::AA::isAssumedThreadLocalObject().
|
friend |
Give the Attributor access to the members so Attributor::identifyDefaultAbstractAttributes(...) can initialize them.
Definition at line 1412 of file Attributor.h.
References Attributor.
Referenced by Attributor, and getIndirectlyCallableFunctions().
The CG-SCC the pass is run on, or nullptr if it is a module pass.
Definition at line 1217 of file Attributor.h.
Referenced by InformationCache().