<div dir="ltr"><div><br></div><div>Hello,<br></div><div><div><br></div><div>For the following test case, reg.c<div><br></div><div>#include <stdio.h><br><br>int getinput()<br>{<br>     static int u=10;<br>      return u++;<br>}<br><br>int main()<br>{<br><br>     int a,b,c,d,e,f,g;<br>    <br>        a=getinput();<br>        b=getinput();<br>        c=getinput();<br>        d=getinput();<br>        e=getinput();<br>        f=getinput();<br>        g=getinput();<br> <br>      printf("%d %d %d %d %d %d %d\n",a,b,c,d,e,f,g);<br>     a=b=c=d=e=f=g=0;<br>      return 0;<br>}<br></div><div><br></div><div><div><b>1. $clang reg.c -Xclang -disable-O0-optnone -S -emit-llvm -o reg.ll && opt -mem2reg -S reg.ll -o reg.ll && llc --regalloc=greedy reg.ll -o reg.s</b></div><br class="gmail-Apple-interchange-newline"></div><div><div><b>2. $clang reg.c -Xclang -disable-llvm-passes -S -emit-llvm -o reg.ll && opt -mem2reg -S reg.ll -o reg.ll && llc --regalloc=greedy reg.ll -o reg.s</b></div></div><div><b><br></b></div><div><div><b>3. $clang reg.c -S -emit-llvm -o reg.ll && opt -mem2reg -S reg.ll -o reg.ll && llc --regalloc=greedy reg.ll -o reg.s</b></div></div><div><br></div><div>Only 1. gives the spill code but it deletes the dead stores., 2 and 3 give only allocas. Why so?? </div><div><br></div></div></div><div>How -mem2reg works and what it depends on?</div><div><br></div><div>How to generate the spill code with dead stores?</div><div><br></div><div>Thank you.</div><div><br></div><div>Regards,</div><div>Priyanka</div></div>