extern void exit (int); extern void abort (void); extern unsigned short f (short a) __attribute__((__noinline__)); unsigned short f (short a) { short b; if (a > 0) return 0; b = ((int) a) + - (int) 32768; return b; } int main (void) { if (sizeof (short) < 2 || sizeof (short) >= sizeof (int)) exit (0); if (f (-32767) != 1) abort (); exit (0); }