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

     1  
     2  typedef unsigned char unit;
     3  typedef unit *unitptr;
     4  extern short global_precision;
     5  typedef __SIZE_TYPE__ size_t;
     6  extern void *memcpy (void *dest, const void *src, size_t n);
     7  
     8  short mp_compare(const unit* r1, const unit* r2)
     9  {
    10    register short precision;
    11    precision = global_precision;
    12    (r1) = ((r1)+(precision)-1);
    13    (r2) = ((r2)+(precision)-1);
    14    do
    15      { if (*r1 < *r2)
    16  	return(-1);
    17        if (*((r1)--) > *((r2)--))
    18  	return(1);
    19      } while (--precision);
    20  }
    21  
    22  static unit modulus[((1280+(2*8))/8)];
    23  static unit d_data[((1280+(2*8))/8)*2];
    24  
    25  int upton_modmult (unitptr prod, unitptr multiplicand, unitptr multiplier)
    26  {
    27   unitptr d = d_data;
    28   while (mp_compare(d,modulus) > 0)
    29     memcpy((void*)(prod), (const void*)(d), (global_precision));
    30  }