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

Martin Liška <marxin at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Last reconfirmed|                            |2021-11-02
            Summary|[11/12 Regression] Wrong    |[11/12 Regression] Wrong
                   |code with -O2               |code with -O2 since
                   |                            |r11-6100-gd41b097350d3c5d0
                 CC|                            |jakub at gcc dot gnu.org,
                   |                            |marxin at gcc dot gnu.org
   Target Milestone|---                         |11.3
             Status|UNCONFIRMED                 |NEW
     Ever confirmed|0                           |1

--- Comment #1 from Martin Liška <marxin at gcc dot gnu.org> ---
Confirmed, started with r11-6100-gd41b097350d3c5d0.

A bit reduced:

short var_3 = 2;
unsigned char var_9 = 23;
unsigned short var_11;
unsigned short arr_4 [23];

void test() __attribute__((noipa));

const unsigned short &min(unsigned short &d, const unsigned short &e) {
  return e < d ? e : d;
}

void test() {
  for (int a = 0; a < var_9; a += 3)
      var_11 = min(arr_4[a], 1) / (arr_4[a] ? arr_4[a] : var_3);
}


int main() {
    for (unsigned long i_0 = 0; i_0 < 23; ++i_0)
        arr_4 [i_0] = 2;
    test();
    __builtin_printf("%hu\n", var_11);
    if (var_11 != 0)
        __builtin_abort();
    return 0;
}

Reply via email to