modernc.org/ccgo/v3@v3.16.14/lib/testdata/gcc-9.1.0/gcc/testsuite/gcc.c-torture/compile/pr60655-1.c (about) 1 /* { dg-options "-fdata-sections" { target { { ! { { hppa*-*-hpux* } && { ! lp64 } } } && { ! "nvptx-*-* pdp11-*-*" } } } } */ 2 3 typedef unsigned char unit; 4 typedef unit *unitptr; 5 extern short global_precision; 6 typedef __SIZE_TYPE__ size_t; 7 extern void *memcpy (void *dest, const void *src, size_t n); 8 9 short mp_compare(const unit* r1, const unit* r2) 10 { 11 register short precision; 12 precision = global_precision; 13 (r1) = ((r1)+(precision)-1); 14 (r2) = ((r2)+(precision)-1); 15 do 16 { if (*r1 < *r2) 17 return(-1); 18 if (*((r1)--) > *((r2)--)) 19 return(1); 20 } while (--precision); 21 } 22 23 static unit modulus[((1280+(2*8))/8)]; 24 static unit d_data[((1280+(2*8))/8)*2]; 25 26 int upton_modmult (unitptr prod, unitptr multiplicand, unitptr multiplier) 27 { 28 unitptr d = d_data; 29 while (mp_compare(d,modulus) > 0) 30 memcpy((void*)(prod), (const void*)(d), (global_precision)); 31 }