modernc.org/ccgo/v3@v3.16.14/lib/testdata/gcc-9.1.0/gcc/testsuite/gcc.c-torture/compile/950922-1.c (about)

     1  struct sw {
     2    const void *x;
     3    int r;
     4  };
     5  struct sq {
     6    struct sw *q_w;
     7    int t;
     8    int z;
     9  };
    10  
    11  int
    12  f (int ch, char *fp, char *ap)
    13  {
    14    register int n;
    15    register char *cp;
    16    register struct sw *p;
    17    register int f;
    18    int prec;
    19    double _double;
    20    int expt;
    21    int ndig;
    22    char expstr[7];
    23    unsigned long long _uquad;
    24    struct sq q;
    25    struct sw w[8];
    26    static char zeroes[16];
    27  
    28    for (;;) {
    29      switch (ch) {
    30      case 'd':
    31        _double = (double) (ap += 8, *((double *) (ap - 8)));
    32        break;
    33      case 'o':
    34        goto nosign;
    35      case 'u':
    36        _uquad = (f & 0x020 ? (ap += 8, *((long long *) (ap - 8))) : f & 0x010 ? (ap += 4, *((long *) (ap - 4))) : f & 0x040 ? (long)(short)(ap += 4, *((int *) (ap - 4))) : (long)(ap += 4, *((int *) (ap - 4))));
    37        goto nosign;
    38      case 'x':
    39        _uquad = (f & 0x020 ? (ap += 8, *((long long *) (ap - 8))) : f & 0x010 ? (ap += 4, *((long *) (ap - 4))) : f & 0x040 ? (long)(unsigned short)(ap += 4, *((int *) (ap - 4))) : (long)(ap += 4, *((int *) (ap - 4))));
    40      nosign:
    41        if (_uquad != 0 || prec != 0);
    42        break;
    43      default:;
    44      }
    45      if ((f & 0x100) == 0) {
    46      } else {
    47        if (ch >= 'f') {
    48  	if (_double == 0) {
    49  	  if (expt < ndig || (f & 0x001) != 0) {
    50  	    { if ((n = (ndig - 1)) > 0) { while (n > 16) {{ p->x = (zeroes); p->r = 16; q.z += 16; p++; if (++q.t >= 8) { if (g(fp, &q)) goto error; p = w; }} n -= 16; }{ p->x = (zeroes); p->r = n; q.z += n; p++; if (++q.t >= 8) { if (g(fp, &q)) goto error; p = w; }}}}
    51  	  }
    52  	} else if (expt <= 0) {
    53  	  { p->x = ("0"); p->r = 1; q.z += 1; p++; if (++q.t >= 8) { if (g(fp, &q)) goto error; p = w; }}
    54  	  { p->x = 0; p->r = 1; q.z += 1; p++; if (++q.t >= 8) { if (g(fp, &q)) goto error; p = w; }}
    55  	  { if ((n = (-expt)) > 0) { while (n > 16) {{ p->x = (zeroes); p->r = 16; q.z += 16; p++; if (++q.t >= 8) { if (g(fp, &q)) goto error; p = w; }} n -= 16; }{ p->x = (zeroes); p->r = n; q.z += n; p++; if (++q.t >= 8) { if (g(fp, &q)) goto error; p = w; }} }}
    56  	  { p->x = cp; p->r = ndig; q.z += ndig; p++; if (++q.t >= 8) { if (g(fp, &q)) goto error; p = w; }}
    57  	} else {
    58  	  { p->x = cp; p->r = expt; q.z += expt; p++; if (++q.t >= 8) { if (g(fp, &q)) goto error; p = w; }}
    59  	  cp += expt;
    60  	  { p->x = ("."); p->r = 1; q.z += 1; p++; if (++q.t >= 8) { if (g(fp, &q)) goto error; p = w; }}
    61  	  { p->x = cp; p->r = (ndig-expt); q.z += (ndig-expt); p++; if (++q.t >= 8) { if (g(fp, &q)) goto error; p = w; }}
    62  	}
    63        }
    64      }
    65    }
    66  
    67   error:;
    68  }