Lines Matching refs:TBAAAccessInfo
41 // TBAAAccessInfo - Describes a memory access in terms of TBAA.
42 struct TBAAAccessInfo {
43 TBAAAccessInfo(TBAAAccessKind Kind, llvm::MDNode *BaseType,
49 TBAAAccessInfo(llvm::MDNode *BaseType, llvm::MDNode *AccessType,
51 : TBAAAccessInfo(TBAAAccessKind::Ordinary, BaseType, AccessType,
55 explicit TBAAAccessInfo(llvm::MDNode *AccessType, uint64_t Size)
56 : TBAAAccessInfo(/* BaseType= */ nullptr, AccessType, /* Offset= */ 0, Size)
59 TBAAAccessInfo()
60 : TBAAAccessInfo(/* AccessType= */ nullptr, /* Size= */ 0)
63 static TBAAAccessInfo getMayAliasInfo() {
64 return TBAAAccessInfo(TBAAAccessKind::MayAlias,
71 static TBAAAccessInfo getIncompleteInfo() {
72 return TBAAAccessInfo(TBAAAccessKind::Incomplete,
79 bool operator==(const TBAAAccessInfo &Other) const {
87 bool operator!=(const TBAAAccessInfo &Other) const {
92 return *this != TBAAAccessInfo();
133 llvm::DenseMap<TBAAAccessInfo, llvm::MDNode *> AccessTagMetadataCache;
181 TBAAAccessInfo getAccessInfo(QualType AccessType);
185 TBAAAccessInfo getVTablePtrAccessInfo(llvm::Type *VTablePtrType);
196 llvm::MDNode *getAccessTagInfo(TBAAAccessInfo Info);
200 TBAAAccessInfo mergeTBAAInfoForCast(TBAAAccessInfo SourceInfo,
201 TBAAAccessInfo TargetInfo);
205 TBAAAccessInfo mergeTBAAInfoForConditionalOperator(TBAAAccessInfo InfoA,
206 TBAAAccessInfo InfoB);
210 TBAAAccessInfo mergeTBAAInfoForMemoryTransfer(TBAAAccessInfo DestInfo,
211 TBAAAccessInfo SrcInfo);
219 template<> struct DenseMapInfo<clang::CodeGen::TBAAAccessInfo> {
220 static clang::CodeGen::TBAAAccessInfo getEmptyKey() {
222 return clang::CodeGen::TBAAAccessInfo(
230 static clang::CodeGen::TBAAAccessInfo getTombstoneKey() {
232 return clang::CodeGen::TBAAAccessInfo(
240 static unsigned getHashValue(const clang::CodeGen::TBAAAccessInfo &Val) {
249 static bool isEqual(const clang::CodeGen::TBAAAccessInfo &LHS,
250 const clang::CodeGen::TBAAAccessInfo &RHS) {