[Bug tree-optimization/106070] Wrong code with -O1
pinskia at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Fri Jun 24 05:04:06 GMT 2022
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.
More information about the Gcc-bugs
mailing list