https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99859

--- Comment #13 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
(In reply to Jakub Jelinek from comment #12)
> And in #c9 you're right that it could be embedded in CONSTRUCTORs too.

Wonder if cp_walk_tree &arg to find the ADDR_EXPR of heap var addresses and
ctx->global->object address would be enough.
Counter example I was thinking about would be:
constexpr int foo(auto x) { return ++*x->p; }
struct S {
  int a = 0;

  constexpr S() {
    struct R { int* p; };
    R b{&a};
    R c{&a};
    foo(&b);
    foo(&c);
  }
};
constexpr S s = S();
static_assert (s.a == 2);
but in that case we handle it correctly already as the address of the automatic
vars is already non-constant.

Reply via email to