)]}'
{
  "commit": "5ef6443cc80fe6f8419095a6bcba533a356cd22e",
  "tree": "287e19d462b6a7142291ab6f1ae0e425d20dff5d",
  "parents": [
    "1788588589a534dd9b732f1ddec10aefd5d689db"
  ],
  "author": {
    "name": "Jakub Jelinek",
    "email": "jakub@redhat.com",
    "time": "Fri Nov 21 14:17:01 2025 +0100"
  },
  "committer": {
    "name": "Jakub Jelinek",
    "email": "jakub@gcc.gnu.org",
    "time": "Mon Dec 08 08:07:45 2025 +0100"
  },
  "message": "c++: Fix up build_data_member_initialization [PR121445]\n\nThe following testcase ICEs, because the constexpr ctor in C++14\nor later doesn\u0027t contain any member initializers and so the\nmassage_constexpr_body -\u003e build_constexpr_constructor_member_initializers\n-\u003e build_data_member_initialization member initialization discovery\nlooks at the ctor body instead.  And while it has various\ncases where it punts, including COMPONENT_REF with a VAR_DECL as first\noperand on lhs of INIT_EXPR, here there is COMPONENT_REF with\nseveral COMPONENT_REFs and VAR_DECL only inside the innermost.\n\nThe following patch makes sure we punt on those as well, instead of\nblindly assuming it is anonymous union member initializer or asserting\nit is a vtable store.\n\nAn alternative to this would be some flag on the INIT_EXPRs created\nby perform_member_init and let build_data_member_initialization inspect\nonly INIT_EXPRs with that flag set.\n\n2025-11-21  Jakub Jelinek  \u003cjakub@redhat.com\u003e\n\n\tPR c++/121445\n\t* constexpr.cc (build_data_member_initialization): Just return\n\tfalse if member is COMPONENT_REF of COMPONENT_REF with\n\tVAR_P get_base_address.\n\n\t* g++.dg/cpp1y/constexpr-121445.C: New test.\n\n(cherry picked from commit 0ac5a60c37d9a40e8993b8207e904b713e73b5d3)\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "0751490cc71cd2197e6bc9fdac59bd07e0bd4ce5",
      "old_mode": 33188,
      "old_path": "gcc/cp/constexpr.cc",
      "new_id": "e667c5221732a4dd4e7783e0576fd5b4e3a78f70",
      "new_mode": 33188,
      "new_path": "gcc/cp/constexpr.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b210aaffaf40cc4369301d0516612a597402486f",
      "new_mode": 33188,
      "new_path": "gcc/testsuite/g++.dg/cpp1y/constexpr-121445.C"
    }
  ]
}
