Hello, I'm moving a compiler pass from llvm 2.9 to 3.0, and I'm getting some strange extra store instructions when optimizing the code.<div><br></div><div>For example, in the code that is in the attachments (On block <b>for.body111</b> for 2.9 and block <b>for.body67 </b>for 3.0), the number of stores goes from 1 to 10. And since the compiler pass adds some verification code before each store, this leads to some performance problems.</div>


<div><br></div><div>The resulting .ll is obtained in this way:</div><div>clang -O3 fir2dim.c -S -emit-llvm -o fir2dim.ll</div><div>llvm-as fir2dim.ll</div><div>opt -O3 fir2dim.bc > fir2dim.opt.bc</div><div>llvm-dis fir2dim.opt.bc</div>


<div><br></div><div>Any idea why this is happening ?</div><div><br></div><div>Thanks,</div><div><br></div><div>Juan</div>