从VS 2015更新3更新到VS2015更新3 d后浮点计算行为不同的原因

Reasons for different Floating Point Calculation Behaviour after update from VS 2015 Update 3 to VS2015 Update 3 d

本文关键字:更新 计算 2015 VS VS2015      更新时间:2023-10-16

我们最近在项目中将VS版本从VS2015更新3更新到3d,现在看到我们的一些专用集成测试失败了。似乎随着编译器的更新,浮点计算和/或浮点文字的行为发生了变化。

我们比较了之前和之后的值,它们现在分歧到足够大的扩展,使某些检查失败。我检查了VS2015的发行说明页面,但没有看到任何相关的更改。

准确地说:我们将编译器/链接器版本从

CL.exe19.00.24210/链接.exe14.00.24210.0

CL.exe19.00.24213.1/链接.exe14.00.24213.1

是否有人知道此编译器更新所做的任何相关更改或错误修复?

更新: 我们现在进一步调查,发现调试模式下的行为在编译器版本之间没有差异。在调试模式下,所有值都是编译器升级后在发布模式下的值,因此我们认为在发布模式下应用的优化存在问题。 事实上,使用以下选项和旧编译器停用 SSA 优化会生成与新编译器完全相同的值:

-d2SSA优化器-

因此,我们可以得出结论,如果停用 SSA 优化并且 MS 在两个编译器版本之间的 SSA 优化中应用了更改,则两个编译器版本的行为相同。