为什么GCC没有显示矢量化信息?

时间:2015-11-17 14:07:08

标签: c gcc

我在Windows 7上使用Codeblocks作为C程序。该程序正在使用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

程序运行正常,但问题是它没有显示哪些循环被矢量化的信息。我该如何解决?

构建日志信息:

  

-------------- Build:在****中发布(编译器: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 \ f.o obj \ Release \ main.o -s   " C:\程序   文件... \ libgomp-1.DLL"   输出文件是bin \ Release \ d.exe,大小为21.00 KB进程   以状态0(0分钟,0秒(s))终止0错误(s),0   警告(0分钟,0秒(s))

3 个答案:

答案 0 :(得分:18)

CodeBlocks是一个IDE。它没有编译任何东西。海湾合作委员会。 -ftree-vectorizer-verbose曾用于以前的版本。现在有-fopt-info,它允许检索有关优化的信息(矢量化);您可以找到相关文档here

甚至展示了如何将矢量化器输出实际检索到stderr: 这一个:

gcc -O2 -ftree-vectorize -fopt-info-vec-missed 
     

从矢量化打印有关错过的优化机会的信息   传递给斯特德尔。请注意,-fopt-info-vec-missed等同于   -fopt-INFO-错过-VEC。

您可以将missed更改为例如列出的optimizedall等等。

答案 1 :(得分:0)

gcc 标志 -ftree-vectorizer-verbose 在 gcc 4.9 中已被弃用。

https://github.com/gcc-mirror/gcc/blob/releases/gcc-4.9/gcc/common.opt

<块引用>

ftree-vectorizer-verbose= 常见的连接拒绝否定忽略 什么也没做。为向后兼容而保留。

答案 2 :(得分:-1)

在GCC-9.0.0中,消息现在以优化,丢失或注释为前缀,而不是全部以注释为前缀的旧行为。 如果希望通过-fopt-info的新的-internals子选项来获取矢量化程序做出的所有决策的详尽日志。