了解基本块的DAG表示及其应用,掌握局部优化的基本方法。设计一个转换程序,把由四元式序列表示的基本块转换为DAG,并在构造DAG的过程中,进行合并已知量、删除无用赋值及删除公共子表达式等局部优化处理。最后再从所得到的DAG出发,按原来生成DAG各个结点的顺序,重建四元式序列形式的基本块。
基于DAG的基本块优化
1.实验目的与任务
了解基本块的DAG表示及其应用,掌握局部优化的基本方法。
2.实验要求
设计一个转换程序,把由四元式序列表示的基本块转换为DAG,并在构造DAG的过程中,进行合并已知量、删除无用赋值及删除公共子表达式等局部优化处理。最后再从所得到的DAG出发,按原来生成DAG各个结点的顺序,重建四元式序列形式的基本块。
3.实验内容
(1)DAG的结点类型只考虑0型、1型和2型,如下表所示。
while(
取下一个四元式Q; newleft=newright=0;
if(getnode(B)= =NULL){ makeleaf(B); newleft=1;
}
switch(Q的类型){
case 0 :
n= getnode(B);
insertidset(n,A);
break;
case 1:
if(isconsnode(B)){
p=calcons(Q.op,B);
if(newleft= =1) /* getnode(B)是处理Q时新建结点 */
delnode(B);
if((n=getnode(p))= =NULL){
makeleaf(p);