https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91732
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |missed-optimization, openmp Status|UNCONFIRMED |NEW Last reconfirmed| |2019-09-11 CC| |jakub at gcc dot gnu.org Component|c |tree-optimization Blocks| |53947 Ever confirmed|0 |1 --- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> --- The runtime alias test is between the two stores of the inner unrolled loop. That's dv[i] vs. dv[i+Q]. Creating dr for *_61 analyze_innermost: success. base_address: dv_44(D) offset from base address: 0 constant offset from base address: 0 step: 8 base alignment: 8 base misalignment: 0 offset alignment: 512 step alignment: 8 base_object: *dv_44(D) Access function 0: {0B, +, 8}_1 Creating dr for *_79 analyze_innermost: success. base_address: (double *) dv_44(D) + (sizetype) ((long unsigned int) Q_35(D) * 8) offset from base address: 0 constant offset from base address: 0 step: 8 base alignment: 8 base misalignment: 0 offset alignment: 512 step alignment: 8 base_object: *(double *) dv_44(D) + (sizetype) ((long unsigned int) Q_35(D) * 8) Access function 0: {0B, +, 8}_1 it's probably unfortunate association since we compute inside the loop _11 = Q_35(D) + i_39; _12 = (long unsigned int) _11; _13 = _12 * 8; With OpenMP SIMD we fail to analyze the data-refs: Creating dr for D.4113[_37][1][0] analyze_innermost: t.c:4:18: missed: failed: evolution of offset is not affine. base_address: offset from base address: constant offset from base address: step: base alignment: 0 base misalignment: 0 offset alignment: 0 step alignment: 0 base_object: D.4113 Access function 0: 0 Access function 1: 1 Access function 2: scev_not_known; where _37 is the SIMD lane. Referenced Bugs: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=53947 [Bug 53947] [meta-bug] vectorizer missed-optimizations