/* { dg-do run } */ /* { dg-require-effective-target int32plus } */ extern void abort (void); unsigned short __attribute__((noinline)) foo (int i) { if (i >= 0 && i <= 0x400000) return (unsigned short)(signed char)i; return i; } int main() { int i; for (i = 0; i < 0xffff; ++i) if (foo(i) != (unsigned short)(signed char) i) abort (); return 0; }