(linenum→info "unix/slp.c:2238")

openssl/0.9.8g/bugs/dggccbug.c

    1: /* NOCW */
    2: /* dggccbug.c */
    3: /* bug found by Eric Young (eay@cryptsoft.com) - May 1995 */
    4: 
    5: #include <stdio.h>
    6: 
    7: /* There is a bug in
    8:  * gcc version 2.5.8 (88open OCS/BCS, DG-2.5.8.3, Oct 14 1994)
    9:  * as shipped with DGUX 5.4R3.10 that can be bypassed by defining
   10:  * DG_GCC_BUG in my code.
   11:  * The bug manifests itself by the vaule of a pointer that is
   12:  * used only by reference, not having it's value change when it is used
   13:  * to check for exiting the loop.  Probably caused by there being 2
   14:  * copies of the valiable, one in a register and one being an address
   15:  * that is passed. */
   16: 
   17: /* compare the out put from
   18:  * gcc dggccbug.c; ./a.out
   19:  * and
   20:  * gcc -O dggccbug.c; ./a.out
   21:  * compile with -DFIXBUG to remove the bug when optimising.
   22:  */
   23: 
   24: void inc(a)
   25: int *a;
   26:         {
   27:         (*a)++;
   28:         }
   29: 
   30: main()
   31:         {
   32:         int p=0;
   33: #ifdef FIXBUG
   34:         int dummy;
   35: #endif
   36: 
   37:         while (p<3)
   38:                 {
   39:                 fprintf(stderr,"%08X\n",p);
   40:                 inc(&p);
   41: #ifdef FIXBUG
   42:                 dummy+=p;
   43: #endif
   44:                 }
   45:         }
Syntax (Markdown)