📅  最后修改于: 2020-12-06 08:12:18             🧑  作者: Mango
根据本地信息,编译器可以执行一些优化。例如,考虑以下代码:
x = a + b;
x = 6 * 3
一些优化需要更多的全局信息。例如,考虑以下代码:
a = 1;
b = 2;
c = 3;
if (....) x = a + 5;
else x = b + 4;
c = x + 1;
在此代码中,第3行的初始赋值是无用的,x +1表达式可以简化为7。
但是不太明显的是编译器如何仅通过查看一个或两个连续的语句来发现这些事实。需要进行更全面的分析,以便编译器在程序的每个点都了解以下内容:
数据流分析用于发现这种属性。可以在程序的控制流程图(CFG)上执行数据流分析。
程序的控制流程图用于确定分配给变量的特定值可能传播到的程序部分。