| /* { dg-additional-options "-std=gnu89" } */ | |
| f (b, c) | |
| unsigned char *b; | |
| int c; | |
| { | |
| unsigned long v = 0; | |
| switch (c) | |
| { | |
| case 'd': | |
| v = ((unsigned long)b[0] << 8) + b[1]; | |
| v >>= 9; | |
| break; | |
| case 'k': | |
| v = b[3] >> 4; | |
| break; | |
| default: | |
| abort (); | |
| } | |
| return v; | |
| } | |
| main () | |
| { | |
| char buf[4]; | |
| buf[0] = 170; buf[1] = 5; | |
| if (f (buf, 'd') != 85) | |
| abort (); | |
| exit (0); | |
| } |