]> git.ipfire.org Git - thirdparty/openssl.git/blob - bugs/ultrixcc.c
Run util/openssl-format-source -v -c .
[thirdparty/openssl.git] / bugs / ultrixcc.c
1 #include <stdio.h>
2
3 /*-
4 * This is a cc optimiser bug for ultrix 4.3, mips CPU.
5 * What happens is that the compiler, due to the (a)&7,
6 * does
7 * i=a&7;
8 * i--;
9 * i*=4;
10 * Then uses i as the offset into a jump table.
11 * The problem is that a value of 0 generates an offset of
12 * 0xfffffffc.
13 */
14
15 main()
16 {
17 f(5);
18 f(0);
19 }
20
21 int f(a)
22 int a;
23 {
24 switch (a & 7) {
25 case 7:
26 printf("7\n");
27 case 6:
28 printf("6\n");
29 case 5:
30 printf("5\n");
31 case 4:
32 printf("4\n");
33 case 3:
34 printf("3\n");
35 case 2:
36 printf("2\n");
37 case 1:
38 printf("1\n");
39 #ifdef FIX_BUG
40 case 0:
41 ;
42 #endif
43 }
44 }