https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108397
--- Comment #6 from Andrew Pinski <pinskia at gcc dot gnu.org> --- I have a patch to fix the testcase in comment #2. After that patch we have: ``` _1 = o_10(D) == 0; _2 = (long long int) _1; _3 = -_2; t1_11 = (long long unsigned int) _3; _4 = t1_11 == 18446744073709551615; _5 = (long long int) _4; _6 = -_5; t2_12 = (long long unsigned int) _6; _7 = t1_11 <= t2_12; _8 = (long long int) _7; _9 = -_8; t3_13 = (long long unsigned int) _9; ``` Forwprop will not change _4 to _1 though. because t1_11 is used twice.