https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95397

--- Comment #9 from Kirill Chilikin <chilikin.k at gmail dot com> ---
It seems that the issue may be in oacc_xform_loop().
When generating code for

  _41 = .GOACC_LOOP (STEP, 1, 32, 1, 0, 4);

(gdb) p mask
$31 = 4
(gdb) p outer_mask
$32 = 4
(gdb) p inner_mask
$33 = 0

which seems to be fine as this is a vector loop, but then it sets

(gdb) p striding
$26 = true
(gdb) p chunking
$27 = false

and the code for IFN_GOACC_LOOP_STEP sets volume = mask, while the result
would be correct if (volume == inner_mask), it this case oacc_thread_numbers()
would return 1. The loop exit condition then becomes !(offset + 1 < bound),
which is expected.

Reply via email to