1  /* { dg-do assemble } */
       2  /* { dg-options "-O2 -fno-align-functions -fno-asynchronous-unwind-tables -mtraceback=no -mno-prefixed -save-temps" } */
       3  
       4  void w1 (void *x, long long y) { *(long long *) (x + 32767) = y; }
       5  void w2 (void *x, long long y) { *(long long *) (x + 32766) = y; }
       6  void w3 (void *x, long long y) { *(long long *) (x + 32765) = y; }
       7  void w4 (void *x, long long y) { *(long long *) (x + 32764) = y; }
       8  void w5 (void *x, long long y) { *(long long *) (x + 32763) = y; }
       9  void w6 (void *x, long long y) { *(long long *) (x + 32762) = y; }
      10  void w7 (void *x, long long y) { *(long long *) (x + 32761) = y; }
      11  void w8 (void *x, long long y) { *(long long *) (x + 32760) = y; }
      12  void w9 (void *x, long long y) { *(long long *) (x + 32759) = y; }
      13  void w10 (void *x, long long y) { *(long long *) (x + 32758) = y; }
      14  void w11 (void *x, long long y) { *(long long *) (x + 32757) = y; }
      15  void w12 (void *x, long long y) { *(long long *) (x + 32756) = y; }
      16  void w13 (void *x, long long y) { *(long long *) (x + 32755) = y; }
      17  void w14 (void *x, long long y) { *(long long *) (x + 32754) = y; }
      18  void w15 (void *x, long long y) { *(long long *) (x + 32753) = y; }
      19  void w16 (void *x, long long y) { *(long long *) (x + 32752) = y; }
      20  void w17 (void *x, long long y) { *(long long *) (x + 32751) = y; }
      21  void w18 (void *x, long long y) { *(long long *) (x + 32750) = y; }
      22  void w19 (void *x, long long y) { *(long long *) (x + 32749) = y; }
      23  void w20 (void *x, long long y) { *(long long *) (x + 32748) = y; }
      24  
      25  long long r1 (void *x) { return *(long long *) (x + 32767); }
      26  long long r2 (void *x) { return *(long long *) (x + 32766); }
      27  long long r3 (void *x) { return *(long long *) (x + 32765); }
      28  long long r4 (void *x) { return *(long long *) (x + 32764); }
      29  long long r5 (void *x) { return *(long long *) (x + 32763); }
      30  long long r6 (void *x) { return *(long long *) (x + 32762); }
      31  long long r7 (void *x) { return *(long long *) (x + 32761); }
      32  long long r8 (void *x) { return *(long long *) (x + 32760); }
      33  long long r9 (void *x) { return *(long long *) (x + 32759); }
      34  long long r10 (void *x) { return *(long long *) (x + 32758); }
      35  long long r11 (void *x) { return *(long long *) (x + 32757); }
      36  long long r12 (void *x) { return *(long long *) (x + 32756); }
      37  long long r13 (void *x) { return *(long long *) (x + 32755); }
      38  long long r14 (void *x) { return *(long long *) (x + 32754); }
      39  long long r15 (void *x) { return *(long long *) (x + 32753); }
      40  long long r16 (void *x) { return *(long long *) (x + 32752); }
      41  long long r17 (void *x) { return *(long long *) (x + 32751); }
      42  long long r18 (void *x) { return *(long long *) (x + 32750); }
      43  long long r19 (void *x) { return *(long long *) (x + 32749); }
      44  long long r20 (void *x) { return *(long long *) (x + 32748); }
      45  
      46  /* { dg-final { object-size text == 440 { target { lp64 } } } } */
      47  /* 32-bit test should really be == 512 bytes, see pr54110 */
      48  /* { dg-final { object-size text <= 640 { target { ilp32 } } } } */
      49  /* { dg-final { scan-assembler-not "(st|l)fd" } } */