Clang with Microsoft CodeGen (January 2016) released

We have just released an out-of-band update of Clang/C2 toolset that brings in some of the community fixes as well as bugs found from testing. This is one of many rapid releases to come in the future, and issues reported from customers will be addressed progressively. Here we only list the changes since the previous release, for a more detailed discussion of the Clang/C2 toolset please read “Clang with Microsoft CodeGen in VS 2015 1“.

This update is still based on Clang 3.7 with some of the relevant community fixes cherry-picked (see below) and revises the version of C2.dll to 19.023413.0.

Microsoft Fixes

  • Fixed silent bad codegen with std::atomic_flag
  • Fixed “Static Library for Universal Windows” template to work out of the box with Clang/C2 toolset when targeting ARM
  • Fixed overwriting of a shared Clang targets definition file when both Clang/C2 and Android MDD are installed
  • Changed defaults in Clang/C2 templates to better reflect typical changes when converting from “Visual Studio 2015 (v140)” toolset (EH enabled, PCH disabled by default)

Community Fixes

r254346 [PR25661] Revert part of r217213 according to r254323.
r254323 [MS Compat] Adjust thiscall to cdecl when deducing template arguments
r253843 [MS ABI] Tolerate invokes of __RTDynamicCast
r253523 [MS ABI] Let arbitrary entities participate in vftable ordering
r253013 [Sema] __is_constructible should return false for function types
r252120 Fix build break. Required with r252115 pick
r252115 [Lex] Add __has_builtin support for __make_integer_seq.
r252036 [Sema] Implement __make_integer_seq
r247619 PR24595: Ignore calling convention modifiers for structors in MS ABI.

How to get this update

  • Control Panel -> Programs -> Programs and Features
  • Right click on “Microsoft Visual Studio Enterprise 2015”
  • Click “Change”
  • Click “Modify”
  • Select “Clang with Microsoft CodeGen (January 2016)”. The previous release would be marked as “Deprecated”.

Bug Reporting

When submitting bug reports that are specific to Clang/C2 (i.e. they are not reproducible in Clang/LLVM), make sure to:

  • Submit your issues at https://connect.microsoft.com/VisualStudio
  • Prefix your bug report title with [Clang/C2]
  • When applicable, make sure to include preprocessed source(s) and associated run script(s) that are reported when ICE happens. Search for the string “PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:” in your build log.
  • You can also email us questions at clangc2 at microsoft.