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

References

lib/Transforms/Scalar/SROA.cpp
 2660     if (V->getType()->isPointerTy())
 2661       if (AllocaInst *AI = dyn_cast<AllocaInst>(V->stripInBoundsOffsets()))
 2664     if (SliceSize < DL.getTypeStoreSize(V->getType())) {
 2666       assert(V->getType()->isIntegerTy() &&
 2668       assert(DL.typeSizeEqualsStoreSize(V->getType()) &&
 2671       V = extractInteger(DL, IRB, V, NarrowTy, NewBeginOffset - BeginOffset,
 2671       V = extractInteger(DL, IRB, V, NarrowTy, NewBeginOffset - BeginOffset,
 2676       return rewriteVectorizedStoreInst(V, SI, OldOp, AATags);
 2677     if (IntTy && V->getType()->isIntegerTy())
 2678       return rewriteIntegerStore(V, SI, AATags);
 2680     const bool IsStorePastEnd = DL.getTypeStoreSize(V->getType()) > SliceSize;
 2684         (canConvertValue(DL, V->getType(), NewAllocaTy) ||
 2686           V->getType()->isIntegerTy()))) {
 2690       if (auto *VITy = dyn_cast<IntegerType>(V->getType()))
 2694               V = IRB.CreateLShr(V, VITy->getBitWidth() - AITy->getBitWidth(),
 2694               V = IRB.CreateLShr(V, VITy->getBitWidth() - AITy->getBitWidth(),
 2696             V = IRB.CreateTrunc(V, AITy, "load.trunc");
 2696             V = IRB.CreateTrunc(V, AITy, "load.trunc");
 2699       V = convertValue(DL, IRB, V, NewAllocaTy);
 2699       V = convertValue(DL, IRB, V, NewAllocaTy);
 2700       NewSI = IRB.CreateAlignedStore(V, &NewAI, NewAI.getAlignment(),
 2704       Value *NewPtr = getNewAllocaSlicePtr(IRB, V->getType()->getPointerTo(AS));
 2705       NewSI = IRB.CreateAlignedStore(V, NewPtr, getSliceAlign(V->getType()),
 2705       NewSI = IRB.CreateAlignedStore(V, NewPtr, getSliceAlign(V->getType()),