选项 -falias-analysis-expand-ssa
说明
增强别名分析能力,有效识别并排除非循环体中相邻数组元素访问的虚假数据依赖关系,促成相邻元素的连续操作被安全矢量化,提升代码执行效率。
使用方法
需开启 -O2 或以上优化等级,同时增加编译选项 -falias-analysis-expand-ssa。
结果
测试用例如下:
1 2 3 4 5 6 7 8 9 10 11 | void f(double *p, long i) { p[i+0] += 1; p[i+1] += 1; } void g(double *p, long i) { double *q = p + i; q[0] += 1; q[1] += 1; } |
测试命令:
1 | gcc -O2 -fdump-tree-slp-details -falias-analysis-expand-ssa test.c -S -o test.s |
图1 选项未打开时


图2 选项打开后


选项未打开时,对于函数f,编译器认为p[i+0]和p[i+1]互为别名,存在依赖关系,矢量化失败。选项打开后,矢量化成功
父主题: 静态编译优化