<div dir="ltr">Hi Tim, <div><br></div><div>Thanks for your reply. However, I have seen that addressSanitizer has done this by placing redzones around each local variable. But i have not figured out yet how they have done it, I was wondering if there is a switch or a method by which I can reset the slotNumbering given to each instruction. By doing so, LLVM would place them in the expected order I guess.</div><div><br></div><div>Best regards, </div><div>Saman</div></div><br><div class="gmail_quote"><div dir="ltr">On Fri, Sep 21, 2018 at 5:29 AM Tim Northover <<a href="mailto:t.p.northover@gmail.com">t.p.northover@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On Thu, 20 Sep 2018 at 21:38, sam djafari via llvm-dev<br>
<<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a>> wrote:<br>
> I am wondering how I can prevent LLVM from doing re-ordering them, or even reset the AllocaInst numbers, so the newly added AllocaInst can be inserted between the existing and original local variables?<br>
<br>
As far as I know you can't. LLVM makes no guarantees about stack<br>
layout at any point.<br>
<br>
What you almost certainly need to do is replace the original alloca<br>
with one big enough to contain both the data and the metadata. You can<br>
use ReplaceAllUsesWith directly on the new alloca for the existing<br>
uses, and then your metadata handling would GEP into it before access<br>
to get to the right part.<br>
<br>
Cheers.<br>
<br>
Tim.<br>
</blockquote></div>