<html><body><p>Hi,<br><br>I wanted to understand if the linear clause on a simd directive is behaving according to spec.  Consider the following program:<br><br>---<br><font color="#E000E0" face="Menlo-Regular">#include </font><font color="#A11F12" face="Menlo-Regular"><stdio.h></font><br><br><font color="#00C200" face="Menlo-Regular">int</font><font face="Menlo-Regular"> main() {</font><br><font face="Menlo-Regular">  </font><font color="#00C200" face="Menlo-Regular">int</font><font face="Menlo-Regular"> a[</font><font color="#A11F12" face="Menlo-Regular">11</font><font face="Menlo-Regular">];</font><br><font face="Menlo-Regular">  </font><font color="#00C200" face="Menlo-Regular">int</font><font face="Menlo-Regular"> lin = </font><font color="#A11F12" face="Menlo-Regular">1</font><font face="Menlo-Regular">;</font><br><br><font color="#E000E0" face="Menlo-Regular">  #pragma omp simd linear(lin:</font><font color="#A11F12" face="Menlo-Regular">2</font><font color="#E000E0" face="Menlo-Regular">)</font><br><font face="Menlo-Regular">  </font><font color="#E26200" face="Menlo-Regular">for</font><font face="Menlo-Regular"> (</font><font color="#00C200" face="Menlo-Regular">int</font><font face="Menlo-Regular"> i=</font><font color="#A11F12" face="Menlo-Regular">1</font><font face="Menlo-Regular">; i<=</font><font color="#A11F12" face="Menlo-Regular">10</font><font face="Menlo-Regular">; i++) {</font><br><font face="Menlo-Regular">    a[i] = lin;</font><br><font face="Menlo-Regular">  }</font><br><br><font face="Menlo-Regular">  printf(</font><font color="#A11F12" face="Menlo-Regular">"linear= </font><font color="#E000E0" face="Menlo-Regular">%d\n</font><font color="#A11F12" face="Menlo-Regular">"</font><font face="Menlo-Regular">, lin);</font><br><font face="Menlo-Regular">  printf(</font><font color="#A11F12" face="Menlo-Regular">"A = </font><font color="#E000E0" face="Menlo-Regular">\n</font><font color="#A11F12" face="Menlo-Regular">"</font><font face="Menlo-Regular">);</font><br><font face="Menlo-Regular">  </font><font color="#E26200" face="Menlo-Regular">for</font><font face="Menlo-Regular"> (</font><font color="#00C200" face="Menlo-Regular">int</font><font face="Menlo-Regular"> i=</font><font color="#A11F12" face="Menlo-Regular">1</font><font face="Menlo-Regular">; i<=</font><font color="#A11F12" face="Menlo-Regular">10</font><font face="Menlo-Regular">; i++) {</font><br><font face="Menlo-Regular">    printf(</font><font color="#A11F12" face="Menlo-Regular">"</font><font color="#E000E0" face="Menlo-Regular">%d</font><font color="#A11F12" face="Menlo-Regular"> "</font><font face="Menlo-Regular">, a[i]);</font><br><font face="Menlo-Regular">  }</font><br><br><font face="Menlo-Regular">  printf(</font><font color="#A11F12" face="Menlo-Regular">"</font><font color="#E000E0" face="Menlo-Regular">\n</font><font color="#A11F12" face="Menlo-Regular">"</font><font face="Menlo-Regular">);</font><br><br><font face="Menlo-Regular">  </font><font color="#E26200" face="Menlo-Regular">return</font><font face="Menlo-Regular"> </font><font color="#A11F12" face="Menlo-Regular">0</font><font face="Menlo-Regular">;</font><br><br><font face="Menlo-Regular">}</font><br>---<br><br>Output:<br><br><font face="Menlo-Regular">linear= 21</font><br><font face="Menlo-Regular">A = </font><br><font face="Menlo-Regular">1 3 5 7 9 11 13 15 17 19 </font><br><br>The variable 'lin' has a value of '21' after the simd loop.  According to the spec, should it have a value of '19' instead?<br><br><font face="Helvetica">> The value corresponding to the sequentially last iteration of the</font><br><font face="Helvetica">> associated loop(s) is assigned to the original list item.</font><br><br>Thanks,<br>Arpith<BR>
</body></html>