Clang with Microsoft CodeGen 2016年1月)发布上线

[原文发表地址]Clang with Microsoft CodeGen (January 2016) released

[原文发表时间]2016/1/21 2:34 AM

我们已经发布了一个带外的Clang/C2工具集,它包含了一些社区问题的修复和测试中发现的bugs。这是未来即将快速发布众多版本中的一个,来自用户的一些问题反馈会逐渐处理。这里我们只列出相较于之前版本的新变化, 更多关于Clang/C2工具的详细讨论,请参阅VS2015.1的Microsoft CodeGen in VS 2015 1

这个更新仍然是基于Clang3.7的一些相关优选的社区问题修复,并且将C2.dll的版本修改为19.023413.0。

Microsoft Fixes

  • 修复原子布尔类型std::atomic_flag,使其生成正确的静态代码.
  • 修复了"Static Library for Universal Windows"模板在目标平台为ARM时,使用Clang/C2工具集的问题。
  • 修复了Clang/C2 和Android MDD同时安装,共享的Clang编译器的目标定义文件被重写的问题。
  • 改变了当从工具集Visual studio 2015(v140)切换到Clang/C2的一些默认参数, 使其更好的兼容新工具集(EH开启异常捕捉模式, PCH预定义头文件默认关闭)。

Community Fixes r254346 [PR25661]根据r254323, 恢复部分一部分r217213。 r254323 [MS Compat]在推演模板参数时,调整了之前的调用机制thiscall, 变为新的调用机制cdecl。 r253843 [MS ABI] 允许调用__RTDynamicCast。 r253523 [MS ABI] 让arbitrary entities加入 vftable的排列 r253013 [Sema] __is_constructible 函数应该返回 false 。 r252120 修复编译中断。 需要和r252115一起。 r252115 [Lex] 增加 __has_builtin 对__make_integer_seq的支持。 r252036 [Sema]实现 __make_integer_seq。 r247619 PR24595: 忽略在MS API中结构体的调用约定修饰符。

如何获取这个更新:

  • 控制面板 -> 程序-> 程序和功能
  • 右击"Microsoft Visual Studio Enterprise 2015"
  • 点击 "Change"
  • 点击 "Modify"
  • 选中"Clang with Microsoft CodeGen (January 2016)". 之前发布的版本将会标记为"过时".

Bug 报告

当提交一个关于Clang/C2的Bug(比如,它们在Clang/LLVM中不可重现),请确保

  • https://connect.microsoft.com/VisualStudio提交你的问题
  • 在你的bug 标题前面加前缀[Clang/C2]
  • 如果需要,在报告ICE发生时,请确定包含了预编译的资源文件和相关的运行脚本。在你的编译日志里搜索"PLEASE ATTACH THE FOLLOWING FILES TO THE BUG REPORT:" 。
  • 你同样可以在Microsoft下和clang2下发邮件告诉我们关于你的问题。