Home | History | Annotate | Download | only in CodeGen

Lines Matching refs:vla

651 /// \param sizeInChars - the total size of the VLA, in chars
652 /// \param align - the total alignment of the VLA
666 llvm::Value *begin = Builder.CreateBitCast(dest, i8p, "vla.begin");
667 llvm::Value *end = Builder.CreateInBoundsGEP(dest, sizeInChars, "vla.end");
670 llvm::BasicBlock *loopBB = CGF.createBasicBlock("vla-init.loop");
671 llvm::BasicBlock *contBB = CGF.createBasicBlock("vla-init.cont");
673 // Make a loop over the VLA. C99 guarantees that the VLA element
677 llvm::PHINode *cur = Builder.CreatePHI(i8p, 2, "vla.cur");
686 llvm::Value *next = Builder.CreateConstInBoundsGEP1_32(cur, 1, "vla.next");
688 // Leave if that's the end of the VLA.
689 llvm::Value *done = Builder.CreateICmpEQ(next, end, "vla-init.isdone");
720 const VariableArrayType *vla;
724 // But note that getTypeInfo returns 0 for a VLA.
736 vla = vlaType;
742 vla = 0;
750 // For a VLA, emit a single element, then splat that over the VLA.
751 if (vla) Ty = getContext().getBaseElementType(vla);
763 if (vla) return emitNonZeroVLAInit(*this, Ty, DestPtr, SrcPtr, SizeVal);
811 // If it's a VLA, we have to load the stored size. Note that
812 // this is the size of the VLA in bytes, not its size in elements.
818 // which has type T* where T is the first non-VLA element type.
823 // If we only have VLA components, 'addr' requires no adjustment.
831 // inside the VLA.
874 // If we had any VLA dimensions, factor them in.
883 const VariableArrayType *vla = getContext().getAsVariableArrayType(type);
884 assert(vla && "type was not a variable array type!");
885 return getVLASize(vla);
897 assert(vlaSize && "no size for VLA!");
917 // We're going to walk down into the type and look for VLA