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

Reply via email to