1  /* { dg-do compile { target lp64 } } */
       2  /* { dg-options "-O2 -masm=att" } */
       3  /* { dg-final { scan-assembler-times "movq\[ \t\]*%rcx, .*" 1 } } */
       4  /* { dg-final { scan-assembler-times "movq\[ \t\]*%rdx, .*" 1 } } */
       5  /* { dg-final { scan-assembler-times "movq\[ \t\]*%r8, .*" 1 } } */
       6  /* { dg-final { scan-assembler-times "movq\[ \t\]*%r9, .*" 1 } } */
       7  /* { dg-final { scan-assembler-times "addsd\[ \t]*40\\\(%rsp\\\), .*" 1 } } */
       8  /* { dg-final { scan-assembler-times "movq\[^\n\r\]*, %rax" 1 } } */
       9  
      10  typedef struct
      11  {
      12    double x;
      13  } Double;
      14  
      15  Double  __attribute__((ms_abi))
      16  fn1 (Double x1, Double x2, Double x3, Double x4, Double x5)
      17  {
      18    Double v;
      19    v.x = x1.x + x2.x + x3.x + x4.x + x5.x;
      20    return v;
      21  }