+++ /dev/null
-/* NOCW */
-/* sgibug.c */
-/* bug found by Eric Young (eay@mincom.oz.au) May 95 */
-
-#include <stdio.h>
-
-/*
- * This compiler bug it present on IRIX 5.3, 5.1 and 4.0.5 (these are the
- * only versions of IRIX I have access to. defining FIXBUG removes the bug.
- * (bug is still present in IRIX 6.3 according to Gage
- * <agage@forgetmenot.Mines.EDU>
- */
-
-/*-
- * Compare the output from
- * cc sgiccbug.c; ./a.out
- * and
- * cc -O sgiccbug.c; ./a.out
- */
-
-static unsigned long a[4] =
- { 0x01234567, 0x89ABCDEF, 0xFEDCBA98, 0x76543210 };
-static unsigned long b[4] =
- { 0x89ABCDEF, 0xFEDCBA98, 0x76543210, 0x01234567 };
-static unsigned long c[4] =
- { 0x77777778, 0x8ACF1357, 0x88888888, 0x7530ECA9 };
-
-main()
-{
- unsigned long r[4];
- sub(r, a, b);
- fprintf(stderr, "input a= %08X %08X %08X %08X\n", a[3], a[2], a[1], a[0]);
- fprintf(stderr, "input b= %08X %08X %08X %08X\n", b[3], b[2], b[1], b[0]);
- fprintf(stderr, "output = %08X %08X %08X %08X\n", r[3], r[2], r[1], r[0]);
- fprintf(stderr, "correct= %08X %08X %08X %08X\n", c[3], c[2], c[1], c[0]);
-}
-
-int sub(r, a, b)
-unsigned long *r, *a, *b;
-{
- register unsigned long t1, t2, *ap, *bp, *rp;
- int i, carry;
-#ifdef FIXBUG
- unsigned long dummy;
-#endif
-
- ap = a;
- bp = b;
- rp = r;
- carry = 0;
- for (i = 0; i < 4; i++) {
- t1 = *(ap++);
- t2 = *(bp++);
- t1 = (t1 - t2);
-#ifdef FIXBUG
- dummy = t1;
-#endif
- *(rp++) = t1 & 0xffffffff;
- }
-}