Hi all,<br><br>I was reading the description of run-time stack and alloca instructions  in LLVM IR and have a question about the same. Do LLVM alloca instructions allow the processing on stack across some alloca blocks?<br>

<br>For example, is following code valid?<br><br>define i32 @f()<br>{<br>       %0 = alloca i8, i32 16<br>      %1 = ptrtoint i8* %0 to i32<br>       %2 = add i32 %1, 4<br>       %3 = inttoptr i32 %2 to i32*<br>      store i32 5,    i32* %3<br>
<br>      %4 = alloca i8, i32 20<br>      %kkk = ptrtoint i8* %4 to i32<br>       %5 = add i32 %kkk, 24                    -----> Access to previous block<br>      %6 = inttoptr i32 %5 to i32*<br>       %7 = load i32* %6<br>
      ret i32 %7<br><br>  }<br><br>Is this kind of accessing across blocks valid? Are we guaranteed that in final executable, this offest processing across blocks would be taken care of properly. I have tried writing some LLVM IRs with these kind of accesses and am getting correct answer( For example, above code is working fine). But wanted to make sure that this is a valid operation in IR.<br>

<br>Thanks<br><br>--Kapil<br>
     <br>
      <br>        <br>