| extern void abort (void); | |
| int | |
| main () | |
| { | |
| int i, j; | |
| unsigned long u, r1, r2; | |
| i = -16; | |
| j = 1; | |
| u = i + j; | |
| /* no sign extension upon shift */ | |
| r1 = u >> 1; | |
| /* sign extension upon shift, but there shouldn't be */ | |
| r2 = ((unsigned long) (i + j)) >> 1; | |
| if (r1 != r2) | |
| abort (); | |
| return 0; | |
| } |