r308897 - Work around an MSVC2017 update 3 codegen bug.

Hans Wennborg via cfe-commits cfe-commits at lists.llvm.org
Tue Jul 25 10:11:25 PDT 2017


r308988. Thanks!

On Mon, Jul 24, 2017 at 9:55 AM, Nico Weber <thakis at 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 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
>
>


More information about the cfe-commits mailing list