Skip to main content
  • Home
  • login
  • Browse the archive

    swh mirror partner logo
swh logo
SoftwareHeritage
Software
Heritage
Mirror
Features
  • Search

  • Downloads

  • Save code now

  • Add forge now

  • Help

  • 2b77684
  • /
  • bugs
  • /
  • sgiccbug.c
Raw File
Permalinks

To reference or cite the objects present in the Software Heritage archive, permalinks based on SoftWare Hash IDentifiers (SWHIDs) must be used.
Select below a type of object currently browsed in order to display its associated SWHID and permalink.

  • content
  • directory
content badge Iframe embedding
swh:1:cnt:6b1b3d4ab0be780093f311bbc3966078c5eec77f
directory badge Iframe embedding
swh:1:dir:fc76403ba39dd37d4650b6a4108461a2ad35fc36
sgiccbug.c
/* 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;
    }
}

ENEA — Copyright (C), ENEA. License: GNU AGPLv3+.
Legal notes  ::  JavaScript license information ::  Web API

back to top