1  /* { dg-options "-O2" } */
       2  
       3  struct pair
       4  {
       5    double a;
       6    long long int b;
       7  };
       8  
       9  void
      10  stp (struct pair *p)
      11  {
      12    p->a = 0.0;
      13    p->b = 1;
      14  }
      15  
      16  /* { dg-final { scan-assembler "stp\txzr, x\[0-9\]+, \\\[x\[0-9\]+\\\]" } } */
      17  
      18  void
      19  stp2 (struct pair *p)
      20  {
      21    p->a = 0.0;
      22    p->b = 0;
      23  }
      24  
      25  struct reverse_pair
      26  {
      27    long long int a;
      28    double b;
      29  };
      30  
      31  void
      32  stp_reverse (struct reverse_pair *p)
      33  {
      34    p->a = 1;
      35    p->b = 0.0;
      36  }
      37  
      38  /* { dg-final { scan-assembler "stp\tx\[0-9\]+, xzr, \\\[x\[0-9\]+\\\]" } } */
      39  
      40  void
      41  stp_reverse2 (struct reverse_pair *p)
      42  {
      43    p->a = 0;
      44    p->b = 0.0;
      45  }
      46  
      47  /* { dg-final { scan-assembler-times "stp\txzr, xzr, \\\[x\[0-9\]+\\\]" 2 } } */