<div dir="ltr">Hello Mehdi Amini,<div><br></div><div>Sorry for slow progress this week but it was due to interesting mistake of mine. I had build llvm with ipra enable by default and that build files were on my path ! Due to that next time I tried to build llvm it was terribly slow  (almost 1 hour for 10% build ). I spend to much time on fixing this by playing around with environment variables, cmake options etc.</div><div>But I think this is a serious concern, we need to think verify this time complexity other wise building a large software with IPRA enable would be very time consuming.<br><div><br></div><div>I studied tets case suggest by you on phabricator, for RegUsageInfo passes I am thinking to print clobbered registers and verify that with FileCheck as expected clobbered register for a particular test-case. Is this approach fine?</div><div><br></div><div>I did not find function call to CostModelAnalysis::print() , Is opt -analyze making that call ?</div><div>I am not able to find similar option in llc. I can't use info printed with dbgs() function as release build do not add -debug-only option to llc executable. </div><div><br></div><div>For the testcase sent by you earlier I have modified it as following :</div><div><div>;;;;; ip-regallco-simple.ll</div><div>; RUN: llc < %s | FileCheck %s -check-prefix=NOIPRA</div><div>; RUN: llc < %s -enable-ipra | FileCheck %s</div><div>; NOIPRA: foo:</div><div>; NOIPRA: pushq<span class="" style="white-space:pre">   </span>%r10</div><div>; NOIPRA: pushq<span class="" style="white-space:pre">        </span>%r9</div><div>; NOIPRA: pushq<span class="" style="white-space:pre"> </span>%r8 </div><div>; NOIPRA: callq bar1</div><div>; CHECK: foo:</div><div>; CHECK-NOT: pushq %r10</div><div>; CHECK-NOT: pushq %r9</div><div>; CHECK-NOT: pushq %r8</div><div>; CHECK: callq bar1</div><div>target triple = "x86_64-unknown-unknown"</div><div>define void @bar1() {</div><div><span class="" style="white-space:pre">        </span>ret void</div><div>}</div><div>define preserve_allcc void @foo()#0 {</div><div><span class="" style="white-space:pre">       </span>call void @bar1()</div><div><span class="" style="white-space:pre">  </span>call void @bar2()</div><div><span class="" style="white-space:pre">  </span>ret void</div><div>}</div><div>define void @bar2() {</div><div><span class="" style="white-space:pre">       </span>ret void</div><div>}</div><div>attributes #0 = {nounwind}</div></div><div><br></div><div>Is this correct approach to verify spills?</div><div><br></div><div>Sincerely,</div><div>Vivek</div></div></div>