/* { dg-do compile } */ 
/* { dg-options "-O2 -fdump-tree-final_cleanup" } */
/* LLVM LOCAL test not applicable */
/* { dg-require-fdump "" } */


typedef struct {
  double min;
  double max;
} interval;
inline interval add(interval x, interval y)  __attribute__((always_inline));
inline interval add(interval x, interval y)  
{
  interval r;
  r.min = x.min + y.min;
  r.max = x.max + y.max;
  return r;
}
interval foo (interval a, interval b, interval c)
{
  return add (a, add (b, c));
}


/* { dg-final { scan-tree-dump-times "\\(struct interval\\)" 0 "final_cleanup"} } */
/* { dg-final { cleanup-tree-dump "final_cleanup" } } */

