// PR c++/99859
// { dg-do compile { target c++20 } }
constexpr void
foo (int *x)
{
  ++*x;
}
constexpr int
bar ()
{
  int *x = new int (0);
  foo (x);
  foo (x);
  int y = *x;
  delete x;
  return y;
}
static_assert (bar () == 2);
struct R { int a, *b; };
constexpr void
baz (R x)
{
  ++*x.b;
}
constexpr int
qux ()
{
  int *x = new int (0);
  R r{1, x};
  baz (r);
  baz (r);
  int y = *x;
  delete x;
  return y;
}
static_assert (qux () == 2);