https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95047
--- Comment #2 from Luca Massarelli <massarelli at diag dot uniroma1.it> --- Ok, so it seems that there is an inconsistency with -Og: $ gcc -Og -g -o opt a.c $ lldb opt * thread #1, name = 'opt', stop reason = breakpoint 1.1 frame #0: 0x00000000004004bb opt`main at a.c:13:9 10 } 11 int main () 12 { -> 13 a = b(4294967286 , 5); 14 } (lldb) s Process 101 stopped * thread #1, name = 'opt', stop reason = step in frame #0: 0x0000000000400482 opt`b(left=-10, right=5) at a.c:6:12 3 b( left, right ) 4 { 5 return -> 6 ((left < 0) || (((int)right) < 0) || (((int)right) >= 32) || (left > ((32767) >> ((int)right)))) ? 7 0 : 8 left 9 ; (lldb) s Process 101 stopped * thread #1, name = 'opt', stop reason = step in frame #0: 0x0000000000400490 opt`b(left=-10, right=5) at a.c:7:7 4 { 5 return 6 ((left < 0) || (((int)right) < 0) || (((int)right) >= 32) || (left > ((32767) >> ((int)right)))) ? -> 7 0 : 8 left 9 ; 10 } (lldb) s Process 101 stopped * thread #1, name = 'opt', stop reason = step in frame #0: 0x00000000004004cf opt`main at a.c:13:7 10 } 11 int main () 12 { -> 13 a = b(4294967286 , 5); 14 }