-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathhang80.c
More file actions
1 lines (1 loc) · 772 Bytes
/
hang80.c
File metadata and controls
1 lines (1 loc) · 772 Bytes
1
extern void abort ( void ) ; static void fixnum_neg ( signed char x , signed char *py , int *pv ){ { unsigned char ux , uy ; ux = ( unsigned char ) x ; uy = -ux ; *py = ( uy < = 127 ) ? ( signed char )} uy : ( - ( signed char ) ( 255 - uy ) - 1 ) ; *pv = ( x = = -128 ) ? 1 : 0 ; } void __attribute__ ( ( noinline ) ) foo ( int x , int y , int v ) { if ( y < -128 || y > 127 ) abort ( ) ; } int test_neg ( void ) { signed char x , y ; int v , err ; err = 0 ; x = -128 ; for ( ; ; ) { fixnum_neg ( x , & y , & v ) ; foo ( ( int ) x , ( int ) y , v ) ; if ( ( v & & x ! = -128 ) || ( ! v & & x = = -128 ) ) ++err ; if ( x = = 127 ) break ; ++x ; } return err ; } int main ( void ) { if ( sizeof ( char ) ! = 1 ) return 0 ; if ( test_neg ( ) ! = 0 ) abort ( ) ; return 0 ; }