我在编译过程中使用以下标志从g++
获取矢量化报告:
-O3 -march=native -mtune=native -g -fopt-info-vec-all=<filename>
该报告帮助我在代码中加快了很多地方,但是现在我一直试图查找GCC认为可能是指针别名的语句。
生成的文件中的消息通常如下所示:
my_file.h:78:35: note: versioning for alias required: can't determine dependence between MEM[(const struct lookup_table *)this_61(D) + 512B].x0_ and MEM[(double &)_219]
93709 consider run-time aliasing test between MEM[(const struct lookup_table *)this_61(D) + 512B].x0_ and MEM[(double &)_219]
...
my_file.h:78:35: note: bad data dependence.
虽然我知道lookup_table::x0_
是什么,但是我正在努力在代码中找到_219
。如果有一种方法可以对这样的名称进行拆解(或符号化),则将很有帮助。或者找到范围,在该范围内,GCC无法断言两个内存位置的独立性。
这可能吗?