/* { dg-do compile { target { ! ia32 } } } */
/* { dg-options "-O2 -mavx" } */
/* { dg-final { scan-assembler-times "vmovapd|vmovsd" 3 } } */

static inline double g (double x){
  asm volatile ("" : "+x" (x));
  return x;
}
static inline double f (double a, double b){
  return g (g (a) + g (b));
}
double h (double a, double b){
  return f (f (a, a), f (b, b));
}
