问题:LLVM
如何实现在汇编语言的.s
文件中所有call
指令前后添加2行固定指令?
答:LLVM
中function
相关的pass
用于修改ir
,而machine function
相关的pas
用于修改mir
,也就相当于修改生成的汇编
编写machine function pass
然后遍历每个指令,在call
之前调用buildMI
函数插入需要的指令,这个pass
必须在code emit
之前,指令调度之后,为了避免指令调度把插入的固定指令移动到其它位置
判断一个mir
是否call
函数,可以使用mi->desc().isCall
判断