|  | #include <stdio.h> | 
|  |  | 
|  | /* This is a cc optimiser bug for ultrix 4.3, mips CPU. | 
|  | * What happens is that the compiler, due to the (a)&7, | 
|  | * does | 
|  | * i=a&7; | 
|  | * i--; | 
|  | * i*=4; | 
|  | * Then uses i as the offset into a jump table. | 
|  | * The problem is that a value of 0 generates an offset of | 
|  | * 0xfffffffc. | 
|  | */ | 
|  |  | 
|  | main() | 
|  | { | 
|  | f(5); | 
|  | f(0); | 
|  | } | 
|  |  | 
|  | int f(a) | 
|  | int a; | 
|  | { | 
|  | switch(a&7) | 
|  | { | 
|  | case 7: | 
|  | printf("7\n"); | 
|  | case 6: | 
|  | printf("6\n"); | 
|  | case 5: | 
|  | printf("5\n"); | 
|  | case 4: | 
|  | printf("4\n"); | 
|  | case 3: | 
|  | printf("3\n"); | 
|  | case 2: | 
|  | printf("2\n"); | 
|  | case 1: | 
|  | printf("1\n"); | 
|  | #ifdef FIX_BUG | 
|  | case 0: | 
|  | ; | 
|  | #endif | 
|  | } | 
|  | } | 
|  |  |