Import of old SSLeay release: SSLeay 0.9.1b (unreleased)
[openssl.git] / bugs / ultrixcc.c
diff --git a/bugs/ultrixcc.c b/bugs/ultrixcc.c
new file mode 100644 (file)
index 0000000..7ba75b1
--- /dev/null
@@ -0,0 +1,45 @@
+#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
+               }
+       }       
+