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>: