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

     1  /* Test failed on an architecture that:
     2  
     3     - had 16-bit registers,
     4     - passed 64-bit structures in registers,
     5     - only allowed SImode values in even numbered registers.
     6  
     7     Before reload, s.i2 in foo() was represented as:
     8  
     9  	(subreg:SI (reg:DI 0) 2)
    10  
    11     find_dummy_reload would return (reg:SI 1) for the subreg reload,
    12     despite that not being a valid register.  */
    13  
    14  struct s
    15  {
    16    short i1;
    17    long i2;
    18    short i3;
    19  };
    20  
    21  struct s foo (struct s s)
    22  {
    23    s.i2++;
    24    return s;
    25  }
    26  
    27  int main ()
    28  {
    29    struct s s = foo ((struct s) { 1000, 2000L, 3000 });
    30    if (s.i1 != 1000 || s.i2 != 2001L || s.i3 != 3000)
    31      abort ();
    32    exit (0);
    33  }