Logo Search packages:      
Sourcecode: openssl version File versions  Download package

dggccbug.c

/* NOCW */
/* dggccbug.c */
/* bug found by Eric Young (eay@cryptsoft.com) - May 1995 */

#include <stdio.h>

/* There is a bug in
 * gcc version 2.5.8 (88open OCS/BCS, DG-2.5.8.3, Oct 14 1994)
 * as shipped with DGUX 5.4R3.10 that can be bypassed by defining
 * DG_GCC_BUG in my code.
 * The bug manifests itself by the vaule of a pointer that is
 * used only by reference, not having it's value change when it is used
 * to check for exiting the loop.  Probably caused by there being 2
 * copies of the valiable, one in a register and one being an address
 * that is passed. */

/* compare the out put from
 * gcc dggccbug.c; ./a.out
 * and
 * gcc -O dggccbug.c; ./a.out
 * compile with -DFIXBUG to remove the bug when optimising.
 */

void inc(a)
int *a;
      {
      (*a)++;
      }

main()
      {
      int p=0;
#ifdef FIXBUG
      int dummy;
#endif

      while (p<3)
            {
            fprintf(stderr,"%08X\n",p);
            inc(&p);
#ifdef FIXBUG
            dummy+=p;
#endif
            }
      }

Generated by  Doxygen 1.6.0   Back to index