Lines Matching full:addr

59   llvm::Value *emitRawPointerFromAddress(Address Addr) const {
60 return Addr.getBasePointer();
64 Address createConstGEP2_32(Address Addr, unsigned Idx0, unsigned Idx1,
70 Addr.getElementType(), emitRawPointerFromAddress(Addr), Idx0, Idx1,
74 Addr.getElementType(), emitRawPointerFromAddress(Addr), Idx0, Idx1,
77 DL.getIndexSizeInBits(Addr.getType()->getPointerAddressSpace()), 0,
82 Addr.getAlignment().alignmentAtOffset(
84 IsInBounds ? Addr.isKnownNonNull() : NotKnownNonNull);
108 llvm::LoadInst *CreateLoad(Address Addr, const llvm::Twine &Name = "") {
109 return CreateAlignedLoad(Addr.getElementType(),
110 emitRawPointerFromAddress(Addr),
111 Addr.getAlignment().getAsAlign(), Name);
113 llvm::LoadInst *CreateLoad(Address Addr, const char *Name) {
116 return CreateAlignedLoad(Addr.getElementType(),
117 emitRawPointerFromAddress(Addr),
118 Addr.getAlignment().getAsAlign(), Name);
120 llvm::LoadInst *CreateLoad(Address Addr, bool IsVolatile,
123 Addr.getElementType(), emitRawPointerFromAddress(Addr),
124 Addr.getAlignment().getAsAlign(), IsVolatile, Name);
128 llvm::LoadInst *CreateAlignedLoad(llvm::Type *Ty, llvm::Value *Addr,
131 return CreateAlignedLoad(Ty, Addr, Align.getAsAlign(), Name);
136 llvm::StoreInst *CreateStore(llvm::Value *Val, Address Addr,
138 return CreateAlignedStore(Val, emitRawPointerFromAddress(Addr),
139 Addr.getAlignment().getAsAlign(), IsVolatile);
143 llvm::StoreInst *CreateAlignedStore(llvm::Value *Val, llvm::Value *Addr,
146 return CreateAlignedStore(Val, Addr, Align.getAsAlign(), IsVolatile);
152 llvm::Value *Addr,
154 return CGBuilderBaseTy::CreateStore(Val, Addr, IsVolatile);
158 llvm::LoadInst *CreateFlagLoad(llvm::Value *Addr,
160 return CreateAlignedLoad(getInt1Ty(), Addr, CharUnits::One(), Name);
164 llvm::StoreInst *CreateFlagStore(bool Value, llvm::Value *Addr) {
165 return CreateAlignedStore(getInt1(Value), Addr, CharUnits::One());
169 CreateAtomicCmpXchg(Address Addr, llvm::Value *Cmp, llvm::Value *New,
174 Addr.emitRawPointer(*getCGF()), Cmp, New,
175 Addr.getAlignment().getAsAlign(), SuccessOrdering, FailureOrdering,
180 CreateAtomicRMW(llvm::AtomicRMWInst::BinOp Op, Address Addr, llvm::Value *Val,
184 Op, Addr.emitRawPointer(*getCGF()), Val,
185 Addr.getAlignment().getAsAlign(), Ordering, SSID);
189 Address CreateAddrSpaceCast(Address Addr, llvm::Type *Ty,
192 if (!Addr.hasOffset())
193 return Address(CreateAddrSpaceCast(Addr.getBasePointer(), Ty, Name),
194 ElementTy, Addr.getAlignment(), Addr.getPointerAuthInfo(),
195 /*Offset=*/nullptr, Addr.isKnownNonNull());
198 CreateAddrSpaceCast(Addr.emitRawPointer(*getCGF()), Ty, Name),
199 ElementTy, Addr.getAlignment(), Addr.isKnownNonNull());
203 Address CreatePointerBitCastOrAddrSpaceCast(Address Addr, llvm::Type *Ty,
206 if (Addr.getType()->getAddressSpace() == Ty->getPointerAddressSpace())
207 return Addr.withElementType(ElementTy);
208 return CreateAddrSpaceCast(Addr, Ty, ElementTy, Name);
212 /// %addr = {T1, T2...}* ...
214 /// %name = getelementptr inbounds nuw %addr, i32 0, i32 index
219 Address CreateStructGEP(Address Addr, unsigned Index,
221 llvm::StructType *ElTy = cast<llvm::StructType>(Addr.getElementType());
226 return Address(CreateStructGEP(Addr.getElementType(), Addr.getBasePointer(),
229 Addr.getAlignment().alignmentAtOffset(Offset),
230 Addr.isKnownNonNull());
234 /// %addr = [n x T]* ...
236 /// %name = getelementptr inbounds %addr, i64 0, i64 index
241 Address CreateConstArrayGEP(Address Addr, uint64_t Index,
243 llvm::ArrayType *ElTy = cast<llvm::ArrayType>(Addr.getElementType());
249 CreateInBoundsGEP(Addr.getElementType(), Addr.getBasePointer(),
252 Addr.getAlignment().alignmentAtOffset(Index * EltSize),
253 Addr.isKnownNonNull());
257 /// %addr = T* ...
259 /// %name = getelementptr inbounds %addr, i64 index
261 Address CreateConstInBoundsGEP(Address Addr, uint64_t Index,
263 llvm::Type *ElTy = Addr.getElementType();
268 CreateInBoundsGEP(ElTy, Addr.getBasePointer(), getSize(Index), Name),
269 ElTy, Addr.getAlignment().alignmentAtOffset(Index * EltSize),
270 Addr.isKnownNonNull());
274 /// %addr = T* ...
276 /// %name = getelementptr inbounds %addr, i64 index
278 Address CreateConstGEP(Address Addr, uint64_t Index,
280 llvm::Type *ElTy = Addr.getElementType();
284 return Address(CreateGEP(ElTy, Addr.getBasePointer(), getSize(Index), Name),
285 Addr.getElementType(),
286 Addr.getAlignment().alignmentAtOffset(Index * EltSize));
292 Address CreateGEP(CodeGenFunction &CGF, Address Addr, llvm::Value *Index,
296 CharUnits::fromQuantity(DL.getTypeAllocSize(Addr.getElementType()));
299 CreateGEP(Addr.getElementType(), Addr.emitRawPointer(CGF), Index, Name),
300 Addr.getElementType(),
301 Addr.getAlignment().alignmentOfArrayElement(EltSize));
305 Address CreateConstInBoundsByteGEP(Address Addr, CharUnits Offset,
307 assert(Addr.getElementType() == TypeCache.Int8Ty);
309 CreateInBoundsGEP(Addr.getElementType(), Addr.getBasePointer(),
311 Addr.getElementType(), Addr.getAlignment().alignmentAtOffset(Offset),
312 Addr.isKnownNonNull());
315 Address CreateConstByteGEP(Address Addr, CharUnits Offset,
317 assert(Addr.getElementType() == TypeCache.Int8Ty);
318 return Address(CreateGEP(Addr.getElementType(), Addr.getBasePointer(),
320 Addr.getElementType(),
321 Addr.getAlignment().alignmentAtOffset(Offset));
325 Address CreateConstInBoundsGEP2_32(Address Addr, unsigned Idx0, unsigned Idx1,
327 return createConstGEP2_32<true>(Addr, Idx0, Idx1, Name);
331 Address CreateConstGEP2_32(Address Addr, unsigned Idx0, unsigned Idx1,
333 return createConstGEP2_32<false>(Addr, Idx0, Idx1, Name);
336 Address CreateGEP(Address Addr, ArrayRef<llvm::Value *> IdxList,
340 llvm::Value *Ptr = emitRawPointerFromAddress(Addr);
341 return RawAddress(CreateGEP(Addr.getElementType(), Ptr, IdxList, Name, NW),
346 Address CreateInBoundsGEP(Address Addr, ArrayRef<llvm::Value *> IdxList,
349 return RawAddress(CreateInBoundsGEP(Addr.getElementType(),
350 emitRawPointerFromAddress(Addr),
352 ElementType, Align, Addr.isKnownNonNull());
356 llvm::Value *CreateIsNull(Address Addr, const Twine &Name = "") {
357 if (!Addr.hasOffset())
358 return CreateIsNull(Addr.getBasePointer(), Name);
359 // The pointer isn't null if Addr has an offset since offsets can always
413 Address CreatePreserveStructAccessIndex(Address Addr, unsigned Index,
416 llvm::StructType *ElTy = cast<llvm::StructType>(Addr.getElementType());
422 CreatePreserveStructAccessIndex(ElTy, emitRawPointerFromAddress(Addr),
425 Addr.getAlignment().alignmentAtOffset(Offset));
429 Address CreatePreserveUnionAccessIndex(Address Addr, unsigned FieldIndex,
431 Addr.replaceBasePointer(CreatePreserveUnionAccessIndex(
432 Addr.getBasePointer(), FieldIndex, DbgInfo));
433 return Addr;
437 Address CreateLaunderInvariantGroup(Address Addr) {
438 Addr.replaceBasePointer(CreateLaunderInvariantGroup(Addr.getBasePointer()));
439 return Addr;
443 Address CreateStripInvariantGroup(Address Addr) {
444 Addr.replaceBasePointer(CreateStripInvariantGroup(Addr.getBasePointer()));
445 return Addr;