|
1
4
编译器必须做的事情是 "alias analysis" 。
如果编译器能证明
对于以下情况,这是一个非常有用的优化
如果输入可能重叠,编译器可以(和 做 )发出代码 支票 用于重叠 如果没有重叠,则运行优化(例如自动矢量化)循环,如果有重叠,则运行安全循环。
如果编译器
不能
证明转换将给出与C抽象机相同的最终结果,但它不能进行转换。(我说“final”是因为存储到内存的顺序不是可观察结果的一部分,除非您使用
“好像”规则只允许在
全部的
不导致UB的案例
,包括诸如
UB是允许进行某些优化的关键(例如不在循环内重做有符号数组索引的符号扩展)。看见 What Every C Programmer Should Know About Undefined Behavior #1/3 。 |
|
Doohyeon Won · 内联函数上的奇怪现象?[关闭] 1 年前 |
|
|
MysteryMoose · GCC下故意忽略初始化器警告中的过量元素 1 年前 |
|
|
Ken P · 如何利用[*]printf格式类型规范警告? 1 年前 |
|
fghoussen · 在C结构体中,为什么打包、对齐似乎会进行填充? 1 年前 |
|
|
adversarr · 全局变量何时导出到可执行文件? 1 年前 |