Pau*_*gar 8 compiler-construction optimization static-analysis pointer-aliasing visual-c++
我试图找出在Visual C++中使用什么形式的别名分析.它也被称为指针分析,模型参考分析,点到分析或副作用分析,并且非常接近逃逸分析或形状分析(如果您已经看到这些术语被绑定).
如果有人知道MSDN讨论这种事情的地方,我可能会从那里找到我的方式.(我尝试过搜索,但如果你没有在那里花太多时间,MSDN似乎是难以理解的.)
纯粹通过 MSDN 文档进行:
“假设无别名”( /Oa ) 和相关选项已在Visual Studio 2008中删除。
添加了__declspec( restrict ) 和 __declspec( noalias )(2003 年或更早版本,另请参阅优化最佳实践)
由此我得出结论,编译器/优化器默认假定 C++ 规则下的别名(粗略地说,相同类型的指针可能指向相同的内存)。这似乎是避免由于全局过于激进的 /Oa 选项而导致错误的明智之举。
我进一步假设链接时代码生成扩大了可以检测到非别名的范围。
我能找到的最好的非 MSDN 参考资料是:VC++ 团队博客。然而,这只是表明编译器确实花费了一些时间在别名分析上。也许链接的Channel9视频可以提供一些见解。
(有些人很幸运地在 VC++ 注释中询问更多信息。提示提示...)
[编辑] 我不知道Phoenix是否最终出现在VS2010中,视频谈到了锯齿6:00,但没什么了不起的。
| 归档时间: |
|
| 查看次数: |
713 次 |
| 最近记录: |