<div style="line-height:1.7;color:#000000;font-size:14px;font-family:Arial"><div style="margin:0;">Hi, there,</div><div style="margin:0;"><br></div><div style="margin:0;">I am not quite clear about the behavior of alloca instruction in llvm IR. </div><div style="margin:0;">----------------------------------------------------------------------------------------------------</div><div style="margin:0;"><div style="margin:0;">1273/// isStaticAlloca - Return true if this alloca is in the entry block of the</div><div style="margin:0;">1274/// function and is a constant size.  If so, the code generator will fold it</div><div style="margin:0;">1275/// into the prolog/epilog code, so it is basically free.</div><div style="margin:0;">1276bool AllocaInst::isStaticAlloca() const {</div><div style="margin:0;">1277  // Must be constant size.</div><div style="margin:0;">1278  if (!isa<ConstantInt>(getArraySize())) return false;</div><div style="margin:0;">1279</div><div style="margin:0;">1280  // Must be in the entry block.</div><div style="margin:0;">1281  const BasicBlock *Parent = getParent();</div><div style="margin:0;">1282  return Parent == &Parent->getParent()->front() && !isUsedWithInAlloca();</div><div style="margin:0;">1283}</div><div style="margin:0;">----------------------------------------------------------------------------------------------------</div><div style="margin:0;">I saw the code fragment as above. Is it possible that alloca is not static? </div><div style="margin:0;">And what is the behavior when alloca is not static? </div><div style="margin:0;">When alloca is not in the entry block, it is not static. How would it behave?</div><div style="margin:0;">Would it adjust the stack for the current function?</div><div style="margin:0;">Thanks!</div><div style="margin:0;"><br></div><div style="margin:0;"><br></div><div style="margin:0;">Best Regards,</div><div style="margin:0;">Jerry</div><div><br></div></div></div><br><br><span title="neteasefooter"><p> </p></span>