|
LLVM 24.0.0git
|
#include "llvm/Analysis/TypeBasedAliasAnalysis.h"#include "AnalysisOptions.h"#include "llvm/ADT/SetVector.h"#include "llvm/Analysis/AliasAnalysis.h"#include "llvm/Analysis/MemoryLocation.h"#include "llvm/IR/Constants.h"#include "llvm/IR/DataLayout.h"#include "llvm/IR/DerivedTypes.h"#include "llvm/IR/InstrTypes.h"#include "llvm/IR/LLVMContext.h"#include "llvm/IR/Metadata.h"#include "llvm/IR/Module.h"#include "llvm/InitializePasses.h"#include "llvm/Pass.h"#include "llvm/Support/Casting.h"#include <cassert>#include <cstdint>Go to the source code of this file.
Functions | |
| static bool | matchAccessTags (const MDNode *A, const MDNode *B, const MDNode **GenericTag) |
| matchTags - Return true if the given couple of accesses are allowed to overlap. | |
| static const MDNode * | getLeastCommonType (const MDNode *A, const MDNode *B) |
| static const MDNode * | createAccessTag (const MDNode *AccessType) |
| static bool | hasField (TBAAStructTypeNode BaseType, TBAAStructTypeNode FieldType) |
| static bool | mayBeAccessToSubobjectOf (TBAAStructTagNode BaseTag, TBAAStructTagNode SubobjectTag, const MDNode *CommonType, const MDNode **GenericTag, bool &MayAlias) |
| Return true if for two given accesses, one of the accessed objects may be a subobject of the other. | |
| INITIALIZE_PASS (TypeBasedAAWrapperPass, "tbaa", "Type-Based Alias Analysis", false, true) ImmutablePass *llvm | |
| static std::optional< uint64_t > | getTBAAStructFieldAsInt64 (const MDOperand &Op) |
| static bool | isScalarAccessTag (const MDNode *Tag) |
Definition at line 503 of file TypeBasedAliasAnalysis.cpp.
References AbstractManglingParser< Derived, Alloc >::Ops, llvm::ConstantAsMetadata::get(), llvm::IntegerType::get(), llvm::MDNode::get(), llvm::MDNode::getContext(), llvm::MDNode::getNumOperands(), UINT64_MAX, and uint64_t.
Referenced by matchAccessTags(), and mayBeAccessToSubobjectOf().
Definition at line 443 of file TypeBasedAliasAnalysis.cpp.
References A(), assert(), B(), llvm::SetVector< T, Vector, Set, N >::insert(), and llvm::SetVector< T, Vector, Set, N >::size().
Referenced by matchAccessTags().
Definition at line 736 of file TypeBasedAliasAnalysis.cpp.
References llvm::mdconst::extract().
Referenced by llvm::AAMDNodes::adjustForAccess().
|
static |
Definition at line 530 of file TypeBasedAliasAnalysis.cpp.
References E(), hasField(), I, and T.
Referenced by hasField(), and mayBeAccessToSubobjectOf().
| INITIALIZE_PASS | ( | TypeBasedAAWrapperPass | , |
| "tbaa" | , | ||
| "Type-Based Alias Analysis" | , | ||
| false | , | ||
| true | ) |
Definition at line 694 of file TypeBasedAliasAnalysis.cpp.
References llvm::createTypeBasedAAWrapperPass().
Definition at line 740 of file TypeBasedAliasAnalysis.cpp.
References T.
Referenced by llvm::AAMDNodes::adjustForAccess().
matchTags - Return true if the given couple of accesses are allowed to overlap.
If
Definition at line 630 of file TypeBasedAliasAnalysis.cpp.
References A(), B(), createAccessTag(), getLeastCommonType(), and mayBeAccessToSubobjectOf().
Referenced by llvm::MDNode::getMostGenericTBAA().
|
static |
Return true if for two given accesses, one of the accessed objects may be a subobject of the other.
The BaseTag and SubobjectTag parameters describe the accesses to the base object and the subobject respectively. CommonType must be the metadata node describing the common type of the accessed objects. On return, MayAlias is set to true iff these accesses may alias and Generic, if not null, points to the most generic access tag for the given two.
Definition at line 547 of file TypeBasedAliasAnalysis.cpp.
References AbstractManglingParser< Derived, Alloc >::Ops, assert(), createAccessTag(), llvm::MDNode::get(), hasField(), and uint64_t.
Referenced by matchAccessTags().