Vectorizer Pragmas

Renato Golin
Sun Feb 16 01:44:00 GMT 2014

On 15 February 2014 22:49, Tim Prince <> wrote:
> In my experience, the (somewhat complicated) gcc --param options work
> sufficiently well for specification of unrolling.

There is precedent for --param in LLVM, we could go this way, too.
Though, I can't see how it'd be applied to a specific function, loop
or lexical block.

> In the same vein, I haven't seen any cases where gcc 4.9 is excessively aggressive in
> vectorization, so that a #pragma novector plus scalar unroll  is needed, as
> it is with Intel compilers.
> (...)
> If your idea is to obtain selective effective
> auto-vectorization in source code which is sufficiently broken that -O2
> -ftree-vectorize can't be considered or -fno-strict-aliasing has to be set,
> I'm not about to second such a motion.

Our main idea with this is to help people report missed vectorization
on their code, and a way to help them achieve performance while LLVM
doesn't catch up.

Another case for this (and other pragmas controlling the optimization
level on a per-function basis) is to help debugging of specific
functions while leaving others untouched.

I'd not condone the usage of such pragmas on a persistent manner, nor
for any code that goes in production, or to work around broken code at
higher optimization levels.


More information about the Gcc mailing list