<div dir="ltr"><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Aug 27, 2013 at 9:40 PM, Hal Finkel <span dir="ltr"><<a href="mailto:hfinkel@anl.gov" target="_blank" class="cremed">hfinkel@anl.gov</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div id=":apy" style="overflow:hidden">+    // In addition to the regular loop unrolling transformation, the loop<br>
+    // vectorizer can also unroll loops. If no unrolling has specifically been<br>
+    // requested, then also prevent the loop vectorizer from unrolling loops.<br>
+    if (Args.hasFlag(options::OPT_fno_unroll_loops,<br>
+        options::OPT_funroll_loops, false)) {<br>
+      CmdArgs.push_back("-backend-option");<br>
+      CmdArgs.push_back("-force-vector-unroll=1");</div></blockquote></div><br>Please don't use -backend-option. Essentially ever.</div><div class="gmail_extra"><br></div><div class="gmail_extra">These options force the setting of thread hostile and un-resettable LLVM commandline flags that are only really suitable for debugging. When they are used directly in the Clang driver, tools which invoke CC1 actions with flagsets derived from the driver multiple times in a single process the result of this flag will cause a crash on the second invocation.</div>
<div class="gmail_extra"><br></div><div class="gmail_extra">I fixed most of the vectorizer flags to not do this, and wrote a commit message explaining why. Especially when committing with post-commit review, please make sure that you are following the commit lists.</div>
</div>