Open Sakura1609 opened 1 year ago
死代码消除样例实际上完成了一次(0+ ... + loopCount)%134209537的计算 内层循环完成了i * 60。外层循环对i/60后再累加,取模,取模运算也可以提取到循环之外
对于这个问题,其实我会尝试将这个内层循环展开,然后经过函数内联再死代码消除和冗余的store删除的话,是可以做到很好的效果的
func里有意义的内容就是对global的赋值,在内联之后就会变成一串的这样的代码:
global = i;
tmp = tmp + global;
global = i;
tmp = tmp + global;
global = i;
tmp = tmp + global;
........
然后就需要在删除冗余的store的时候识别到这样的冗余
最好的优化效果就会把这个内层循环变成一条全局变量的赋值和60条加法指令
func里有意义的内容就是对global的赋值,在内联之后就会变成一串的这样的代码:
global = i; tmp = tmp + global; global = i; tmp = tmp + global; global = i; tmp = tmp + global; ........
然后就需要在删除冗余的store的时候识别到这样的冗余
已经做了
死代码消除样例实际上完成了一次(0+ ... + loopCount)%134209537的计算 内层循环完成了i * 60。外层循环对i/60后再累加,取模,取模运算也可以提取到循环之外