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

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |rguenth at gcc dot gnu.org
   Last reconfirmed|                            |2024-05-15
             Status|UNCONFIRMED                 |NEW
          Component|middle-end                  |tree-optimization
     Ever confirmed|0                           |1

--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> ---
Confirmed.

[scheduler] original ast:
for (int c0 = 0; c0 <= 3; c0 += 1)
  for (int c1 = 0; c1 <= 3; c1 += 1) {
    for (int c2 = 0; c2 <= 3; c2 += 1) {
      for (int c3 = 0; c3 <= 1; c3 += 1)
        S_3(c0, c1, c2, c3);
      S_21(c0, c1, c2);
    }
    for (int c2 = 0; c2 <= 1; c2 += 1)
      for (int c5 = 0; c5 <= 3; c5 += 1)
        S_6(c0, c1, c5, c2);
    for (int c2 = 0; c2 <= 3; c2 += 1)
      S_23(c0, c1, c2);
  }

shows something goes wrong translating the sibling loop or the original AST
shown is in fact a transformed one already.  The transformed shown shows
an extra interchange:

[scheduler] AST generated by isl:
for (int c0 = 0; c0 <= 3; c0 += 1)
  for (int c1 = 0; c1 <= 3; c1 += 1) {
    for (int c2 = 0; c2 <= 3; c2 += 1) {
      for (int c3 = 0; c3 <= 1; c3 += 1)
        S_3(c0, c1, c2, c3);
      S_21(c0, c1, c2);
    }
    for (int c4 = 0; c4 <= 3; c4 += 1)
      for (int c5 = 0; c5 <= 1; c5 += 1)
        S_6(c0, c1, c4, c5);
    for (int c2 = 0; c2 <= 3; c2 += 1)
      S_23(c0, c1, c2);
  }

but the distribution of the sibling for (i...) loop looks confused already.

Reply via email to