[Bug tree-optimization/110582] [14 Regression] Wrong code at -O2/3 on x86_64-linux-gnu
pinskia at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Sat Jul 8 01:08:44 GMT 2023
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110582
--- Comment #3 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
(In reply to Richard Biener from comment #2)
> It works with -fno-tree-loop-optimize but the difference from loop opts is
> just
So changing it to what -ftree-loop-optimize, it still passes with
-fno-tree-loop-optimize (which is even odder):
```
int a, b;
int main() {
char c = a = 0;
unsigned char t = 253;
for (; t != 0; t --){
int d = 2;
d ^= 2 && a;
b = a == 0 ? d : d / a;
a = b;
}
for (; (1 + 95 << 24) + b + 1 + 686658714L + b - 2297271457;)
;
}
```
The difference in this case is:
+ unsigned charD.20 ivtmp_32;
+ unsigned charD.20 ivtmp_33;
...
- # RANGE [irange] unsigned char [1, 253]
- # t_19 = PHI <t_16(5), 253(2)>
# .MEM_20 = PHI <.MEM_20(5), .MEM_11(D)(2)>
# a_lsm.11_2 = PHI <iftmp.1_9(5), 0(2)>
+ # ivtmp_33 = PHI <ivtmp_32(5), 253(2)>
...
- # RANGE [irange] unsigned char [0, 252]
- t_16 = t_19 + 255;
- if (t_16 != 0)
+ ivtmp_32 = ivtmp_33 - 1;
+ if (ivtmp_32 != 0)
```
The only thing I can of which might be causing the issue is +255 vs -1 here.
More information about the Gcc-bugs
mailing list