<div dir="ltr">I submitted r219517 (not in the suspect range) which improved SCEV by enabling computation of trip counts if the loop has multiple exits.  One of the things this enables is loop unrolling for loops with multiple exits. Then Chandler submitted r219550 and r219562 (in the suspect range) to fix some latent bugs that my change exposed (thanks, btw).  The regressing benchmark (<a href="http://llvm.org/klaus/test-suite/blob/release_32/SingleSource/Benchmarks/Misc/mandel-2.c" target="_blank">http://llvm.org/klaus/test-suite/blob/release_32/SingleSource/Benchmarks/Misc/mandel-2.c</a>) *does* have a loop with multiple exits (the core loop of the benchmark).  However, it's not unrolled with -O3 because the trip count of the loop latch is not computable at compile time.  Nor is it vectorizable (the vectorizor uses trip count computation).  So, I'd speculate the reason for the regression lies elsewhere (complex arithmetic?).<div><br><div>Mark</div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Oct 17, 2014 at 7:51 AM, Anton Korobeynikov <span dir="ltr"><<a href="mailto:anton@korobeynikov.info" target="_blank">anton@korobeynikov.info</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">> Chandler’s complex arithmetic changes are also in the range: r219557 in clang.  We saw it change the code in mandel-2 significantly.<br>
</span>mandel-2 is broken on hard FP ABI systems, btw. The reason is simply:<br>
we're emitting a call to __muldc3 with AAPCS VFP calling convention,<br>
however, the function expects softfp (AAPCS) calling conv and reads<br>
garbage from GP registers.<br>
<br>
I'm working on fix.<br>
<span class="HOEnZb"><font color="#888888"><br>
--<br>
With best regards, Anton Korobeynikov<br>
Faculty of Mathematics and Mechanics, Saint Petersburg State University<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:LLVMdev@cs.uiuc.edu">LLVMdev@cs.uiuc.edu</a>         <a href="http://llvm.cs.uiuc.edu" target="_blank">http://llvm.cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a><br>
</div></div></blockquote></div><br></div>