Lines Matching defs:vla
840 /// \param sizeInChars - the total size of the VLA, in chars
854 llvm::Value *begin = Builder.CreateBitCast(dest, i8p, "vla.begin");
855 llvm::Value *end = Builder.CreateInBoundsGEP(dest, sizeInChars, "vla.end");
858 llvm::BasicBlock *loopBB = CGF.createBasicBlock("vla-init.loop");
859 llvm::BasicBlock *contBB = CGF.createBasicBlock("vla-init.cont");
861 // Make a loop over the VLA. C99 guarantees that the VLA element
865 llvm::PHINode *cur = Builder.CreatePHI(i8p, 2, "vla.cur");
874 llvm::Value *next = Builder.CreateConstInBoundsGEP1_32(cur, 1, "vla.next");
876 // Leave if that's the end of the VLA.
877 llvm::Value *done = Builder.CreateICmpEQ(next, end, "vla-init.isdone");
908 const VariableArrayType *vla;
912 // But note that getTypeInfo returns 0 for a VLA.
924 vla = vlaType;
930 vla = 0;
938 // For a VLA, emit a single element, then splat that over the VLA.
939 if (vla) Ty = getContext().getBaseElementType(vla);
951 if (vla) return emitNonZeroVLAInit(*this, Ty, DestPtr, SrcPtr, SizeVal);
999 // If it's a VLA, we have to load the stored size. Note that
1000 // this is the size of the VLA in bytes, not its size in elements.
1006 // which has type T* where T is the first non-VLA element type.
1011 // If we only have VLA components, 'addr' requires no adjustment.
1019 // inside the VLA.
1077 // If we had any VLA dimensions, factor them in.
1086 const VariableArrayType *vla = getContext().getAsVariableArrayType(type);
1087 assert(vla && "type was not a variable array type!");
1088 return getVLASize(vla);
1100 assert(vlaSize && "no size for VLA!");
1121 // We're going to walk down into the type and look for VLA