optimization - Visual C++ 使用什么形式的别名分析?

标签 optimization visual-c++ compiler-construction static-analysis

我试图找出 Visual C++ 中使用的别名分析形式。它也称为指针分析、mod-ref 分析、指向分析或副作用分析,并且与逃逸分析或形状分析非常接近(如果您见过这些术语)。

如果有人知道 MSDN 在哪里讨论此类事情,我可能可以从那里找到我的方法。 (我尝试过搜索,但如果你不花太多时间的话,MSDN 似乎很难理解。)

最佳答案

纯粹按照 MSDN 文档进行操作:

“假设无别名”( /Oa ) 和相关选项已在 Visual Studio 2008 中删除。 。

已添加 __declspec( restrict ) 和 __declspec( noalias )(2003 年或更早版本,另请参阅 Optimization best practices )

据此,我得出结论,编译器/优化器默认假定 C++ 规则下的别名(粗略地说,相同类型的指针可能指向相同的内存)。这似乎是避免由于全局过于激进的/Oa 选项而导致错误的明智之举。

我进一步假设链接时代码生成扩大了可以检测到非别名的范围。

<小时/>

我能找到的最好的非 MSDN 引用是:VC++ team blog 。然而,这只是表明编译器确实花费了一些时间来进行别名分析。也许是Channel9链接的视频提供了一些见解。

(有些人很幸运地在 VC++ 注释中询问更多信息。提示提示...)

<小时/>

[编辑]我不知道Phoenix是否最终出现在VS2010中,视频谈到了锯齿6:00,但没什么了不起的。

关于optimization - Visual C++ 使用什么形式的别名分析?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1358215/

相关文章:

c++ - ATL COM DLL 适用于 C# 但不适用于 C++

c - 在哪里使用 volatile ?

c++ - 伪代码翻译

python - Python 可以优化我的函数输入以获得目标值吗?

c++ - C/C++编译器可以以任何方式内联C回调函数吗?

c++ - 错误 : IntellliSense: identifier "uint32" is undefined?

c++ - 处理CRF++工具包中的example.cpp

algorithm - 优化列表文字增删改查

perl - 带内联的子程序 perl

c++ - 如何使用 C++ 检查 <wstring> 是否以某个字符串开头