Optimization Visual C++;使用? < >我想弄清楚VisualC++中使用的别名分析< /强>的形式。它也被称为指针分析、mod ref分析、指向分析或副作用分析,并且非常接近于逃避分析或形状分析(如果您已经看到了这些术语)

Optimization Visual C++;使用? < >我想弄清楚VisualC++中使用的别名分析< /强>的形式。它也被称为指针分析、mod ref分析、指向分析或副作用分析,并且非常接近于逃避分析或形状分析(如果您已经看到了这些术语),optimization,visual-c++,static-analysis,compiler-construction,aliasing,Optimization,Visual C++,Static Analysis,Compiler Construction,Aliasing,如果有人知道MSDN在哪里讨论这类事情,我可能会从那里找到我的方法。(我尝试过搜索,但如果你不在那里花费太多时间,MSDN似乎是无法穿透的。)完全按照MSDN文档: “假定没有别名”()和相关选项已在中删除 __添加了declspec()和_declspec()(2003或更早版本,另请参见) 从这里我可以得出结论,编译器/优化器默认在C++规则下假定混叠(大致上,同一类型的指针可以指向同一内存)。这似乎是一个明智之举,可以避免由于全局过度攻击/Oa选项而导致的错误 我进一步假设链接时间代码生成

如果有人知道MSDN在哪里讨论这类事情,我可能会从那里找到我的方法。(我尝试过搜索,但如果你不在那里花费太多时间,MSDN似乎是无法穿透的。)

完全按照MSDN文档:

“假定没有别名”()和相关选项已在中删除

__添加了declspec()和_declspec()(2003或更早版本,另请参见)

从这里我可以得出结论,编译器/优化器默认在C++规则下假定混叠(大致上,同一类型的指针可以指向同一内存)。这似乎是一个明智之举,可以避免由于全局过度攻击/Oa选项而导致的错误

我进一步假设链接时间代码生成增加了可以检测到非锯齿的范围


我能找到的最好的非MSDN参考是:。然而,这只是表明编译器确实在别名分析上花费了一些时间。也许链接的视频提供了一些见解

(有些人幸运地在VC++评论中询问了更多信息。提示…)



[编辑]我不知道菲尼克斯是否最终出现在VS2010中,视频谈到了6:00的别名,但没有什么特别之处。

MSDN很难。与使用msdn搜索本身相比,使用Google和site:msdn.com更好。我认为他们会带来尽可能多的武器,因为别名结果会禁用许多优化。所以我不希望答案很简单。即使他们使用“指向”分析,也有很多变化:流敏感/不敏感、上下文敏感与否、feild敏感与否、过程内、过程间、交叉编译单元。。。问题的背后是什么?@Ira Baxter:这正是我想弄明白的。是否对流、上下文、字段、对象等敏感?我的论文是如何进行的,我知道我知道GCC、LLVM和其他编译器的答案(或者如何找到答案),但是我找不到Visual C++的TBH,你可能会比MSDN本身从MSDN VC++开发博客中得到更好的结果。