https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117247
--- Comment #1 from Tobias Burnus <burnus at gcc dot gnu.org> --- Follow up note: the following all fails (on nvptx with -Og, -Os, -O1 or higher); the first two are nearly identical on dump level: - omp loop - omp simd - omp for simd while the following works: - omp for With -O0, the original code is used: a[i] = 2*i + 1; b[i] = a[i]; which works. With -Og, there is initially in the nvptx: int D.1717[1024]; _20 = .GOMP_SIMT_ENTER (simduid.1_18(D), &D.1717); _22 = .GOMP_SIMT_ENTER_ALLOC (_20); _23 = .GOMP_SIMT_LANE (); * * * My suspicion is that this causes an out-of-stack memory: .func compute$_omp_fn$0$impl (.param.u64 %in_ar0) { .local.align 8 .b8 %simtstack_ar[4096]; Indication for this is also that it works with N=100.