ref: 7f224a8f6d343cf0aaf162cc9b9f7d4d62ac78ac
dir: /sys/src/ape/lib/openssl/bugs/ultrixcc.c/
#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 } }