https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109650
--- Comment #5 from Georg-Johann Lay <gjl at gcc dot gnu.org> --- Created attachment 54956 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=54956&action=edit pr109650-2.c: A simpler C test case without assembly. Again, this testcase triggers with avr-gcc -Os: typedef _Bool bool; typedef __UINT8_TYPE__ uint8_t; static inline __attribute__((__always_inline__)) bool func1 (uint8_t p1, uint8_t p2) { if (p1) return p2 <= 8; return p2 <= 2; } __attribute__((__noinline__, __noclone__)) bool func2 (uint8_t p1, uint8_t p2) { return func1 (p1, p2); } int main (void) { if (func1 (0, 1) != func2 (0, 1)) __builtin_abort(); if (func1 (0, 2) != func2 (0, 2)) __builtin_abort(); if (func1 (0, 3) != func2 (0, 3)) __builtin_abort(); if (func1 (1, 7) != func2 (1, 7)) __builtin_abort(); if (func1 (1, 8) != func2 (1, 8)) __builtin_abort(); if (func1 (1, 9) != func2 (1, 9)) __builtin_abort(); __builtin_exit (0); }