/* PR rtl-optimization/61673 */ char e; __attribute__((noinline, noclone)) void bar (char x) { if (x != 0x54 && x != (char) 0x87) __builtin_abort (); } __attribute__((noinline, noclone)) void foo (const char *x) { char d = x[0]; int c = d; if ((c >= 0 && c <= 0x7f) == 0) e = d; bar (d); } __attribute__((noinline, noclone)) void baz (const char *x) { char d = x[0]; int c = d; if ((c >= 0 && c <= 0x7f) == 0) e = d; } int main () { const char c[] = { 0x54, 0x87 }; e = 0x21; foo (c); if (e != 0x21) __builtin_abort (); foo (c + 1); if (e != (char) 0x87) __builtin_abort (); e = 0x21; baz (c); if (e != 0x21) __builtin_abort (); baz (c + 1); if (e != (char) 0x87) __builtin_abort (); return 0; }