[Bug tree-optimization/106070] Wrong code with -O1

pinskia at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Fri Jun 24 04:49:22 GMT 2022


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

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

void test();

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

(The [[gnu::noipa]] makes things easier for single file testcases so no
inlining or other IPA passes on the function).


More information about the Gcc-bugs mailing list