diff options
Diffstat (limited to 'clang/lib/CodeGen/CGValue.h')
-rw-r--r-- | clang/lib/CodeGen/CGValue.h | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/clang/lib/CodeGen/CGValue.h b/clang/lib/CodeGen/CGValue.h index 33575c97da9..c0348e4d2ea 100644 --- a/clang/lib/CodeGen/CGValue.h +++ b/clang/lib/CodeGen/CGValue.h @@ -232,7 +232,7 @@ class LValue { private: void Initialize(QualType Type, Qualifiers Quals, CharUnits Alignment, LValueBaseInfo BaseInfo, - TBAAAccessInfo TBAAInfo = TBAAAccessInfo()) { + llvm::MDNode *TBAAAccessType = nullptr) { assert((!Alignment.isZero() || Type->isIncompleteType()) && "initializing l-value with zero alignment!"); this->Type = Type; @@ -241,7 +241,7 @@ private: assert(this->Alignment == Alignment.getQuantity() && "Alignment exceeds allowed max!"); this->BaseInfo = BaseInfo; - this->TBAAInfo = TBAAInfo; + this->TBAAInfo = TBAAAccessInfo(Type, TBAAAccessType, /* Offset= */ 0); // Initialize Objective-C flags. this->Ivar = this->ObjIsArray = this->NonGC = this->GlobalObjCRef = false; @@ -311,6 +311,9 @@ public: TBAAAccessInfo getTBAAInfo() const { return TBAAInfo; } void setTBAAInfo(TBAAAccessInfo Info) { TBAAInfo = Info; } + llvm::MDNode *getTBAAAccessType() const { return TBAAInfo.AccessType; } + void setTBAAAccessType(llvm::MDNode *N) { TBAAInfo.AccessType = N; } + const Qualifiers &getQuals() const { return Quals; } Qualifiers &getQuals() { return Quals; } @@ -367,8 +370,10 @@ public: // global register lvalue llvm::Value *getGlobalReg() const { assert(isGlobalReg()); return V; } - static LValue MakeAddr(Address address, QualType type, ASTContext &Context, - LValueBaseInfo BaseInfo, TBAAAccessInfo TBAAInfo) { + static LValue MakeAddr(Address address, QualType type, + ASTContext &Context, + LValueBaseInfo BaseInfo, + llvm::MDNode *TBAAAccessType = nullptr) { Qualifiers qs = type.getQualifiers(); qs.setObjCGCAttr(Context.getObjCGCAttrKind(type)); @@ -376,7 +381,7 @@ public: R.LVType = Simple; assert(address.getPointer()->getType()->isPointerTy()); R.V = address.getPointer(); - R.Initialize(type, qs, address.getAlignment(), BaseInfo, TBAAInfo); + R.Initialize(type, qs, address.getAlignment(), BaseInfo, TBAAAccessType); return R; } |