|
1
4
编译器必须做的事情是 "alias analysis" 。
如果编译器能证明
对于以下情况,这是一个非常有用的优化
如果输入可能重叠,编译器可以(和 做 )发出代码 支票 用于重叠 如果没有重叠,则运行优化(例如自动矢量化)循环,如果有重叠,则运行安全循环。
如果编译器
不能
证明转换将给出与C抽象机相同的最终结果,但它不能进行转换。(我说“final”是因为存储到内存的顺序不是可观察结果的一部分,除非您使用
“好像”规则只允许在
全部的
不导致UB的案例
,包括诸如
UB是允许进行某些优化的关键(例如不在循环内重做有符号数组索引的符号扩展)。看见 What Every C Programmer Should Know About Undefined Behavior #1/3 。 |
|
|
giantjenga · 优化整数向量到二进制向量的转换 1 年前 |
|
|
Daniel Lobo · 使用约束进行优化 1 年前 |
|
Sergio · python中大量数字的乘法 1 年前 |
|
|
Sergey Dev · 临时表与表变量 1 年前 |
|
|
John · 减少C中的内存消耗++ 1 年前 |