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

     1  /* On IRIX 6, PB is passed partially in registers and partially on the
     2     stack, with an odd number of words in the register part.  Check that
     3     the long double stack argument (PC) is still accessed properly.  */
     4  
     5  struct s { int val[16]; };
     6  
     7  long double f (int pa, struct s pb, long double pc)
     8  {
     9    int i;
    10  
    11    for (i = 0; i < 16; i++)
    12      pc += pb.val[i];
    13    return pc;
    14  }
    15  
    16  int main ()
    17  {
    18    struct s x;
    19    int i;
    20  
    21    for (i = 0; i < 16; i++)
    22      x.val[i] = i + 1;
    23    if (f (1, x, 10000.0L) != 10136.0L)
    24      abort ();
    25    exit (0);
    26  }