1  /* Test AAPCS layout (alignment).  */
       2  
       3  /* { dg-do run { target aarch64*-*-* } } */
       4  
       5  #ifndef IN_FRAMEWORK
       6  #define TESTFILE "test_align-7.c"
       7  
       8  struct s
       9    {
      10      long long x;
      11      long long y;
      12    };
      13  
      14  /* This still has size 16, so is still passed by value.  */
      15  typedef __attribute__ ((__aligned__ (32))) struct s overaligned;
      16  
      17  /* A few structs, at 32-byte-aligned memory locations.  */
      18  overaligned a = { 2, 3 };
      19  overaligned b = { 5, 8 };
      20  overaligned c = { 13, 21 };
      21  
      22  #include "abitest.h"
      23  #else
      24    ARG (int, 7, W0)
      25    /* Alignment should be 8.  */
      26    ARG (overaligned, a, X1)
      27    ARG (int, 9, W3)
      28    ARG (int, 11, W4)
      29    ARG (overaligned, b, X5)
      30    ARG (int, 15, W7)
      31  #ifndef __AAPCS64_BIG_ENDIAN__
      32    ARG (int, 10, STACK)
      33  #else
      34    ARG (int, 10, STACK + 4)
      35  #endif
      36    /* Natural alignment should be 8.  */
      37    LAST_ARG (overaligned, c, STACK + 8)
      38  #endif