https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68315
Bug ID: 68315 Summary: ivdep has no effect in parloops Product: gcc Version: 6.0 Status: UNCONFIRMED Severity: enhancement Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: vries at gcc dot gnu.org Target Milestone: --- Consider testcase ivdep.c: ... void foo (int n, int *a, int *b, int *c) { int i, j; #pragma GCC ivdep for (i = 0; i < n; ++i) a[i] = b[i] + c[i]; } ... When compiling it with autopar on: ... $ gcc -O2 -ftree-parallelize-loops=2 -fdump-tree-all-details ivdep.c -S ... We find in the dump-file: ... FAILED: data dependencies exist across iterations ... Although the definition of the pragma is in terms of SIMD: ... With this pragma, the programmer asserts that there are no loop-carried dependencies which would prevent consecutive iterations of the following loop from executing concurrently with SIMD (single instruction multiple data) instructions. ... I'd say the no loop-carried dependencies bit means that we can use it for autopar.