19

I'm using Codeblocks for a C program on Windows 7. The program is using the OMP library. GCC version is 4.9.2. Mingw x86_64-w64-mingw32-gcc-4.9.2.exe.

Flags used are: -fopenmp -O3 -mfpmath=sse -funroll-loops -ftree-loop-distribution -ftree-vectorize -ftree-vectorizer-verbose=2.

The program runs correctly but the problem is that it doesn't show information on what loops were vectorized or not. How can I solve it?

Build log info:

-------------- Build: Release in **** (compiler: GNU GCC Compiler)---------------

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...\f.c -o obj\Release\f.o x86_64-w64-mingw32-g++.exe -o bin\Release\d.exe obj\Release\f.o obj\Release\main.o -s "C:\Program Files...\libgomp-1.dll" Output file is bin\Release\d.exe with size 21.00 KB Process terminated with status 0 (0 minute(s), 0 second(s)) 0 error(s), 0 warning(s) (0 minute(s), 0 second(s))

phuclv
  • 37,963
  • 15
  • 156
  • 475
Franktrt
  • 373
  • 1
  • 8
  • 18

3 Answers3

31

CodeBlocks is an IDE. It doesn't compile anything. GCC does. The -ftree-vectorizer-verbose used to work in previous versions. Now there's -fopt-info, which allows to retrieve information about optimizations (vectorization too); you can find the relevant documentation here.

It is even shown how to actually retrieve the vectorizer output to stderr: and this one:

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

prints information about missed optimization opportunities from vectorization passes on stderr. Note that -fopt-info-vec-missed is equivalent to -fopt-info-missed-vec.

You can change missed to e.g. optimized, all and so on as listed.

edmz
  • 8,220
  • 2
  • 26
  • 45
  • Now it works. Before changing compiler, I had that kind of info and then I couldn't retrieve them again. – Franktrt Nov 17 '15 at 15:46
  • An example flag that achieves this would be welcome... the man page for fopt-info family of options is a bit hard to grok. – Andrew Wagner Jun 29 '16 at 14:19
  • @AndrewWagner I've checked the docs again and it seems to have changed since I've posted the answer, so I've updated the link and added a bit more explanation. – edmz Jun 29 '16 at 14:28
4

The gcc flag -ftree-vectorizer-verbose has been deprecated in gcc 4.9. In newer versions of GCC you can use -fopt-info-vec-missed.

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

ftree-vectorizer-verbose= Common Joined RejectNegative Ignore Does nothing. Preserved for backward compatibility.

yugr
  • 19,769
  • 3
  • 51
  • 96
kosaz
  • 61
  • 5
0

In GCC-9.0.0,Messages are now prefixed with optimizaed,missed,or note,rather than the old behavior of all being preixed with note. If want to get exhaustive log of all decisions made by the vectorizer via new -internals suboption of -fopt-info.

kuan
  • 19
  • 1