reference, declaration → definition definition → references, declarations, derived classes, virtual overrides reference to multiple definitions → definitions unreferenced |
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,