后端优化 指令合并

指令合并主要合并相邻的,use-def 链上 相邻的指令。

讲多条可以合并的指令合并成一条指令,去除多余指令。

1, 常量折叠和计算。

 a = 100;

b = 100;

c = a + b;

d = f * c;

====>

d = f * 200;

 

2,去除无效move指令

a = b;

c = a;

=====>

c = b;

 

3, 去除相同的无效的load, 需要一个指示内存状态的memop

res1 = Ioad op1 {mem}   op3 memop  memstat1;

res2 = load op1 var    op2 offset IMM    op3  memop memstat1

4, 去除无效的memstore

memstat1  I_store  Mem{ip}  res1 memstat0   // INSN1

// rm INSNI when memstat1 only used by INSN2

memstat2  I_store  Mem{ip}  res2 memstat1   // INSN2

 

posted @ 2024-07-11 14:16  zzas12345  阅读(0)  评论(0编辑  收藏  举报