| #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 |
| } |
| } |