为什么GCC不显示矢量化信息?
我在Windows 7上为C程序使用Codeblocks。该程序正在使用OMP库。 GCC版本是4.9.2。 Mingw x86_64-w64-mingw32-gcc-4.9.2.exe。
使用的标志是: -fopenmp -O3 -mfpmath=sse -funroll-loops -ftree-loop-distribution -ftree-vectorize -ftree-vectorizer-verbose=2
。
该程序运行正常,但问题是它不显示有关哪些循环是矢量化的信息。 我该如何解决它?
生成日志信息:
--------------编译:在****发布(编译器:GNU GCC编译器)---------------
x86_64-w64-mingw32-gcc-4.9.2.exe -Wall -O2 -march = corei7 -fexpensive-optimizations -O3 -fopenmp -mfpmath = sse -funroll-loops -ftree-loop-distribution -ftree -vectorize -ftree- vectorizer-verbose = 2 -c C: Users ... fc -o obj Release fo x86_64-w64-mingw32-g ++。exe -o bin Release d.exe obj Release fo obj Release main.o -s“C: Program Files ... libgomp-1.dll”输出文件为bin Release d.exe,大小为21.00 KB进程以状态0终止(0分钟,0秒s))0个错误,0个警告(0分(s),0秒(s))
CodeBlocks是一个IDE。 它不编译任何东西。 GCC确实。 -ftree-vectorizer-verbose
用于在以前的版本中工作。 现在有-fopt-info
,它允许检索有关优化的信息(矢量化); 你可以在这里找到相关的文档。
它甚至显示了如何实际检索矢量化器输出到stderr
:和这一个:
gcc -O2 -ftree-vectorize -fopt-info-vec-missed
从stderr上的矢量化通行证输出有关错过的优化机会的信息。 请注意,-fopt-info-vec-missed等同于-fopt-info-missed-vec。
您可以将missed
更改为例如optimized
, all
等等。