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