)]}'
{
  "commit": "4e4684ca6a79b22fe91acaa81af2d4a00d6e1345",
  "tree": "7f6253a47f2102426724d80563ae73d71517d850",
  "parents": [
    "d96603a48d338a92b78628016d00cbf11576621e"
  ],
  "author": {
    "name": "Jason Merrill",
    "email": "jason@redhat.com",
    "time": "Wed Jun 04 13:31:02 2025 -0400"
  },
  "committer": {
    "name": "Jason Merrill",
    "email": "jason@redhat.com",
    "time": "Mon Jun 09 09:22:07 2025 -0400"
  },
  "message": "c++: constexpr prvalues vs genericize [PR120502]\n\nHere constexpr evaluation was getting confused by the result of\nsplit_nonconstant_init, which leaves an INIT_EXPR from an empty CONSTRUCTOR\nto be followed by member initialization.  As a result\nCONSTRUCTOR_NO_CLEARING was set for the time_zone, and\ncxx_eval_store_expression didn\u0027t set it again for the initial clobber in the\nbasic_string constructor, so when cxx_fold_indirect_ref wants to check\nwhether the anonymous union active member had type non_trivial_if, we see\nthat we don\u0027t currently have a value for the anonymous union, try to add\none, and fail.\n\nSo let\u0027s do constexpr evaluation before split_nonconstant_init.\n\n\tPR c++/120502\n\ngcc/cp/ChangeLog:\n\n\t* cp-gimplify.cc (cp_fold_r) [TARGET_EXPR]: Do constexpr evaluation\n\tbefore genericize.\n\t* constexpr.cc (cxx_eval_store_expression): Add comment.\n\ngcc/testsuite/ChangeLog:\n\n\t* g++.dg/cpp2a/constexpr-prvalue2.C: New test.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "d647a09269d3a6506832a6a7a2c14b69ac74c8e1",
      "old_mode": 33188,
      "old_path": "gcc/cp/constexpr.cc",
      "new_id": "1ed3aba0b0f879109783a5260c37511038134775",
      "new_mode": 33188,
      "new_path": "gcc/cp/constexpr.cc"
    },
    {
      "type": "modify",
      "old_id": "d2423fd1848a69bbb9204db7fac04acf35b7151a",
      "old_mode": 33188,
      "old_path": "gcc/cp/cp-gimplify.cc",
      "new_id": "5363ec83ff41f38a2465464a2c284ffdb3917508",
      "new_mode": 33188,
      "new_path": "gcc/cp/cp-gimplify.cc"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "c2dc7cd49456e57e0be6873d72f6265bfcd1774e",
      "new_mode": 33188,
      "new_path": "gcc/testsuite/g++.dg/cpp2a/constexpr-prvalue2.C"
    }
  ]
}
