<div dir="ltr">We probably want this in 5.0.</div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Jul 24, 2017 at 12:54 PM, Nico Weber via cfe-commits <span dir="ltr"><<a href="mailto:cfe-commits@lists.llvm.org" target="_blank">cfe-commits@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: nico<br>
Date: Mon Jul 24 09:54:11 2017<br>
New Revision: 308897<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=308897&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project?rev=308897&view=rev</a><br>
Log:<br>
Work around an MSVC2017 update 3 codegen bug.<br>
<br>
C2017 update 3 produces a clang that crashes when compiling clang. Disabling<br>
optimizations for StmtProfiler::<wbr>VisitCXXOperatorCallExpr() makes the crash go<br>
away.<br>
<br>
Patch from Bruce Dawson <<a href="mailto:brucedawson@chromium.org">brucedawson@chromium.org</a>>!<br>
<a href="https://reviews.llvm.org/D35757" rel="noreferrer" target="_blank">https://reviews.llvm.org/<wbr>D35757</a><br>
<br>
Modified:<br>
    cfe/trunk/lib/AST/StmtProfile.<wbr>cpp<br>
<br>
Modified: cfe/trunk/lib/AST/StmtProfile.<wbr>cpp<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/StmtProfile.cpp?rev=308897&r1=308896&r2=308897&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/cfe/trunk/lib/AST/<wbr>StmtProfile.cpp?rev=308897&r1=<wbr>308896&r2=308897&view=diff</a><br>
==============================<wbr>==============================<wbr>==================<br>
--- cfe/trunk/lib/AST/StmtProfile.<wbr>cpp (original)<br>
+++ cfe/trunk/lib/AST/StmtProfile.<wbr>cpp Mon Jul 24 09:54:11 2017<br>
@@ -1412,6 +1412,15 @@ static Stmt::StmtClass DecodeOperatorCal<br>
   llvm_unreachable("Invalid overloaded operator expression");<br>
 }<br>
<br>
+#if defined(_MSC_VER)<br>
+#if _MSC_VER == 1911<br>
+// Work around <a href="https://developercommunity.visualstudio.com/content/problem/84002/clang-cl-when-built-with-vc-2017-crashes-cause-vc.html" rel="noreferrer" target="_blank">https://developercommunity.<wbr>visualstudio.com/content/<wbr>problem/84002/clang-cl-when-<wbr>built-with-vc-2017-crashes-<wbr>cause-vc.html</a><br>
+// MSVC 2017 update 3 miscompiles this function, and a clang built with it<br>
+// will crash in stage 2 of a bootstrap build.<br>
+#pragma optimize("", off)<br>
+#endif<br>
+#endif<br>
+<br>
 void StmtProfiler::<wbr>VisitCXXOperatorCallExpr(const CXXOperatorCallExpr *S) {<br>
   if (S->isTypeDependent()) {<br>
     // Type-dependent operator calls are profiled like their underlying<br>
@@ -1444,6 +1453,12 @@ void StmtProfiler::<wbr>VisitCXXOperatorCallE<br>
   ID.AddInteger(S->getOperator()<wbr>);<br>
 }<br>
<br>
+#if defined(_MSC_VER)<br>
+#if _MSC_VER == 1911<br>
+#pragma optimize("", on)<br>
+#endif<br>
+#endif<br>
+<br>
 void StmtProfiler::<wbr>VisitCXXMemberCallExpr(const CXXMemberCallExpr *S) {<br>
   VisitCallExpr(S);<br>
 }<br>
<br>
<br>
______________________________<wbr>_________________<br>
cfe-commits mailing list<br>
<a href="mailto:cfe-commits@lists.llvm.org">cfe-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/cfe-commits</a><br>
</blockquote></div><br></div>