Loop unrolling pragma and OpenMP


Newer OpenMP versions include a construct for loop unrolling, but,
however, I was wondering if the regular clang pragma for loop
unrolling can be safely mixed with an OpenMP loop,without using the
new OpenMP feature.

I mean, is this guaranteed to work?

#pragma omp parallel for
#pragma clang loop unroll_count(N)
for(i=0;i<n;i++) {

Thanks a lot!

Michael implements the new features and knows :slight_smile:

Unfortunately, this does not work, by design. In the compiler pipeline
"#pragma omp parallel for" is lowered in the front-end, while "#pragma
clang loop unroll_count(N)" is in the LoopUnroll mid-end-pass.
"#pragma omp parallel for" cannot be applied on a loop that has not
yet been unrolled in the front-end. In practice, the #pragma clang
loop will just be ignored.


Thanks a lot for the clarification. This explains why I wasn't getting
any improvement by combining the two pragmas.