reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced

References

tools/clang/lib/CodeGen/CGExprScalar.cpp
 3178   auto &DL = CGF.CGM.getDataLayout();
 3198   if (BinaryOperator::isNullPointerArithmeticExtension(CGF.getContext(),
 3202     return CGF.Builder.CreateIntToPtr(index, pointer->getType());
 3207     index = CGF.Builder.CreateIntCast(index, DL.getIntPtrType(PtrTy), isSigned,
 3213     index = CGF.Builder.CreateNeg(index, "idx.neg");
 3215   if (CGF.SanOpts.has(SanitizerKind::ArrayBounds))
 3216     CGF.EmitBoundsCheck(op.E, pointerOperand, index, indexOperand->getType(),
 3226       = CGF.CGM.getSize(CGF.getContext().getTypeSizeInChars(objectType));
 3226       = CGF.CGM.getSize(CGF.getContext().getTypeSizeInChars(objectType));
 3228     index = CGF.Builder.CreateMul(index, objectSize);
 3230     Value *result = CGF.Builder.CreateBitCast(pointer, CGF.VoidPtrTy);
 3230     Value *result = CGF.Builder.CreateBitCast(pointer, CGF.VoidPtrTy);
 3231     result = CGF.Builder.CreateGEP(result, index, "add.ptr");
 3232     return CGF.Builder.CreateBitCast(result, pointer->getType());
 3237         = CGF.getContext().getAsVariableArrayType(elementType)) {
 3239     llvm::Value *numElements = CGF.getVLASize(vla).NumElts;
 3245     if (CGF.getLangOpts().isSignedOverflowDefined()) {
 3246       index = CGF.Builder.CreateMul(index, numElements, "vla.index");
 3247       pointer = CGF.Builder.CreateGEP(pointer, index, "add.ptr");
 3249       index = CGF.Builder.CreateNSWMul(index, numElements, "vla.index");
 3251           CGF.EmitCheckedInBoundsGEP(pointer, index, isSigned, isSubtraction,
 3261     Value *result = CGF.Builder.CreateBitCast(pointer, CGF.VoidPtrTy);
 3261     Value *result = CGF.Builder.CreateBitCast(pointer, CGF.VoidPtrTy);
 3262     result = CGF.Builder.CreateGEP(result, index, "add.ptr");
 3263     return CGF.Builder.CreateBitCast(result, pointer->getType());
 3266   if (CGF.getLangOpts().isSignedOverflowDefined())
 3267     return CGF.Builder.CreateGEP(pointer, index, "add.ptr");
 3269   return CGF.EmitCheckedInBoundsGEP(pointer, index, isSigned, isSubtraction,