https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106492
Tobias Burnus <burnus at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Last reconfirmed| |2022-08-01 Keywords| |ice-on-valid-code, openmp Status|UNCONFIRMED |NEW CC| |burnus at gcc dot gnu.org, | |jakub at gcc dot gnu.org Summary|ICE in #pragma omp for simd |[OpenMP] ICE in #pragma omp |and bitfields |for simd and bitfields Ever confirmed|0 |1 --- Comment #1 from Tobias Burnus <burnus at gcc dot gnu.org> --- The ICE occurs for the second SIMD loop (in U::U()) – it compiles when commenting the U::U() loops out - but it still has an ICE with only the S::S() body commented out. * * * pr95063.C:19:8: error: type mismatch in binary expression <unnamed-signed:12> <unnamed-signed:12> int That's for 'a = a + D.2617;' - To show more context, this lines appears in the following omplow dump (slightly edited). - The D.2617 variable is generated before line 11738 in omp-low.cc's lower_omp_for where the type is type = fd.iter_type. #pragma omp for private(k.2) firstprivate(a) lastprivate(a) for (k.2 = 0; k.2 < 64; k.2 = k.2 + 1) { int D.2617; int D.2618; <unnamed-signed:12> a; int k; a = a + D.2617; // <<< ICE here: k = 0; #pragma omp simd _looptemp_(D.2617) _looptemp_(D.2618) linear(k:1) linear(a:1) for (k = 0; k < 64; k = k + 1) a.0 = a; a.1 = (<unnamed-unsigned:12>) a.0; D.2611 = a.1 + 1; a = (<unnamed-signed:12>) D.2611; #pragma omp continue (k, k) if (k == 64) goto <D.2620>; else goto <D.2619>; <D.2620>: a = a; <D.2619>: