(root)/
gcc-13.2.0/
gcc/
testsuite/
g++.dg/
tree-ssa/
modref-1.C
/* { dg-do compile } */
/* { dg-options "-O2 -fdump-tree-optimized" } */
struct S { int a; char b[20]; S(); S(S const&); };
volatile int global;

__attribute__ ((noinline,noclone))
struct S noescape (int *b)
{
  struct S a;
  a.a = b!=0;
  global = 1;
  return a;
}

void escape (struct S *p);

__attribute__ ((noinline,noclone))
int
test(int *b)
{
  struct S s = noescape (b);
  escape (&s);
  return *b;
}
int test2()
{
  int b=1234;
  test (&b);
  return b;
}
// ipa-modref should analyze parameter B of test as noescape.
// { dg-final { scan-tree-dump "return 1234" "optimized" } }