// PR sanitizer/81715
// { dg-do compile }
// Verify the variables for inlined foo parameters are reused
// { dg-options "-fno-sanitize=address -fsanitize=kernel-address -O2 -Wframe-larger-than=16384" }

struct S { int a, b, c, d, e; char f[1024]; };
void baz (int *, int *, int *, struct S *, int *, int *);

static inline struct S
foo (int a, int b, int c, struct S d, int e, int f)
{
  struct S s;
  baz (&a, &b, &c, &d, &e, &f);
  s = d;
  return s;
}

struct S g[64];

void
bar (int a, int b, int c, struct S d, int e, int f)
{
#define A(N) \
  g[N+0] = foo (a, b, c, d, e, f);	\
  g[N+1] = foo (a, b, c, d, e, f);	\
  g[N+2] = foo (a, b, c, d, e, f);	\
  g[N+3] = foo (a, b, c, d, e, f);	\
  g[N+4] = foo (a, b, c, d, e, f);	\
  g[N+5] = foo (a, b, c, d, e, f);	\
  g[N+6] = foo (a, b, c, d, e, f);	\
  g[N+7] = foo (a, b, c, d, e, f);	\
  foo (a, b, c, d, e, f);		\
  foo (a, b, c, d, e, f)
  A(0); A(8); A(16); A(24);
  A(32); A(40); A(48); A(56);
}
