r308897 - Work around an MSVC2017 update 3 codegen bug.

Nico Weber via cfe-commits cfe-commits at lists.llvm.org
Mon Jul 24 09:55:52 PDT 2017


We probably want this in 5.0.

On Mon, Jul 24, 2017 at 12:54 PM, Nico Weber via cfe-commits <
cfe-commits at 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 <brucedawson at 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 at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20170724/6ecd5b57/attachment.html>


More information about the cfe-commits mailing list