123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- /* 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
- }
- }
|