计算机工程与应用 ›› 2017, Vol. 53 ›› Issue (3): 41-46.DOI: 10.3778/j.issn.1002-8331.1505-0129
郭振华,吴艳霞,安龙飞,张国印,卢文祥
GUO Zhenhua, WU Yanxia, AN Longfei, ZHANG Guoyin, LU Wenxiang
摘要: 函数内联(Function Inlining)是使用函数体代替函数调用的一种编译优化技术。LLVM中原生的内联模型只根据函数体的大小来判断函数内联与否,而没有考虑函数的调用次数和后续的优化。针对这个问题,提出了基于函数调用次数(NFC)和考虑后续循环合并(BLF)的新内联模型。首先,通过NFC模型对被多次调用的函数进行内联,进而减少更多因函数调用而产生的额外消耗。其次,通过BLF模型能够识别出进行内联后可以进一步进行循环合并优化的函数,为后续循环合并优化提供支持。实验结果表明,提出的函数内联优化技术是可行的,测试程序平均加速比为1.52%。