Home | History | Annotate | Download | only in CodeGen

Lines Matching refs:vla

1141 /// \param sizeInChars - the total size of the VLA, in chars
1155 llvm::Value *begin = Builder.CreateBitCast(dest, i8p, "vla.begin");
1156 llvm::Value *end = Builder.CreateInBoundsGEP(dest, sizeInChars, "vla.end");
1159 llvm::BasicBlock *loopBB = CGF.createBasicBlock("vla-init.loop");
1160 llvm::BasicBlock *contBB = CGF.createBasicBlock("vla-init.cont");
1162 // Make a loop over the VLA. C99 guarantees that the VLA element
1166 llvm::PHINode *cur = Builder.CreatePHI(i8p, 2, "vla.cur");
1175 llvm::Value *next = Builder.CreateConstInBoundsGEP1_32(cur, 1, "vla.next");
1177 // Leave if that's the end of the VLA.
1178 llvm::Value *done = Builder.CreateICmpEQ(next, end, "vla-init.isdone");
1209 const VariableArrayType *vla;
1213 // But note that getTypeInfo returns 0 for a VLA.
1225 vla = vlaType;
1231 vla = nullptr;
1239 // For a VLA, emit a single element, then splat that over the VLA.
1240 if (vla) Ty = getContext().getBaseElementType(vla);
1252 if (vla) return emitNonZeroVLAInit(*this, Ty, DestPtr, SrcPtr, SizeVal);
1300 // If it's a VLA, we have to load the stored size. Note that
1301 // this is the size of the VLA in bytes, not its size in elements.
1307 // which has type T* where T is the first non-VLA element type.
1312 // If we only have VLA components, 'addr' requires no adjustment.
1320 // inside the VLA.
1378 // If we had any VLA dimensions, factor them in.
1387 const VariableArrayType *vla = getContext().getAsVariableArrayType(type);
1388 assert(vla && "type was not a variable array type!");
1389 return getVLASize(vla);
1401 assert(vlaSize && "no size for VLA!");
1422 // We're going to walk down into the type and look for VLA