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

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Last reconfirmed|                            |2022-06-24
             Status|UNCONFIRMED                 |NEW
     Ever confirmed|0                           |1
           Keywords|                            |needs-bisection

--- Comment #2 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
Reduced testcase:
#include <stdio.h>
unsigned int var_2 = 1;
int var_4 = -1;
int var_10 = 4;
unsigned long arr_252;
[[gnu::noipa]]
void test() {
  for (int a = 0; a < var_10; a += 2)
    arr_252 = var_2 != (int)var_4 ? (unsigned long)var_4 : (unsigned
long)var_2;
}

void test();

int main() {
    test();
    fprintf(stderr, "%lx\n", arr_252);
    if (arr_252 != 0xffffffffffffffff)
        __builtin_abort();
}

---- CUT ---
There is a missing sign extend from 32bit to 64bit.

Confirmed.

Reply via email to