)]}'
{
  "commit": "545f16217dff218c85c94990566439d3aedfb8e1",
  "tree": "20a2a72384bb3d498bdd7b7ae48df862fd2cfcec",
  "parents": [
    "cc017256e743c325d05428cb15a46ed54ff5ed5d"
  ],
  "author": {
    "name": "Eli Friedman",
    "email": "efriedma@qti.qualcomm.com",
    "time": "Thu May 14 16:06:10 2026 -0700"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Thu May 14 23:06:10 2026 +0000"
  },
  "message": "[clang] Implement constexpr DesignatedInitUpdateExpr. (#196427)\n\nDesignatedInitUpdateExpr exists to handle some obscure edge cases in C,\nwhere the usual InitListExpr canonicalization can\u0027t be performed.\nPreviously, we didn\u0027t need constant evaluation for this, but C23\nconstexpr means we need to evaluate this before codegen.\n\nImplementation is mostly straightforward: just need to evaluate the two\nsubexpressions, in order, and skip any NoInitExprs.\n\nAlong the way, I ran into an issue with the way we manage array APValues\nfor non-bytecode constant evaluation; fix reallocation to work\ncorrectly.\n\nFixes #193373.  Fixes #196450.",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "346f7133f03d781f9d81908992c2d6beb76623ef",
      "old_mode": 33188,
      "old_path": "clang/docs/ReleaseNotes.rst",
      "new_id": "745f9e6556eecb277db67370f5af51b66eed2d3c",
      "new_mode": 33188,
      "new_path": "clang/docs/ReleaseNotes.rst"
    },
    {
      "type": "modify",
      "old_id": "683676529d52fdc050783d27273c9e954928a8e1",
      "old_mode": 33188,
      "old_path": "clang/lib/AST/ByteCode/Compiler.cpp",
      "new_id": "64cc47e6b670a1168f50077566f8112bd8d14cfb",
      "new_mode": 33188,
      "new_path": "clang/lib/AST/ByteCode/Compiler.cpp"
    },
    {
      "type": "modify",
      "old_id": "ff5d0c05fe14b81d72b92f62907213284b2ff992",
      "old_mode": 33188,
      "old_path": "clang/lib/AST/ByteCode/Compiler.h",
      "new_id": "020cf93868fd776104bb942c2afaf9c3ae449fe4",
      "new_mode": 33188,
      "new_path": "clang/lib/AST/ByteCode/Compiler.h"
    },
    {
      "type": "modify",
      "old_id": "5f09c9ea4a7b887aba2536a297108f58ec07dec5",
      "old_mode": 33188,
      "old_path": "clang/lib/AST/ExprConstant.cpp",
      "new_id": "38aa5798cfeb9eedda1e06b086d66051eed8ca16",
      "new_mode": 33188,
      "new_path": "clang/lib/AST/ExprConstant.cpp"
    },
    {
      "type": "modify",
      "old_id": "19f9033cf924e00b3e3896512e4c53d5f0f51436",
      "old_mode": 33188,
      "old_path": "clang/test/Sema/constexpr.c",
      "new_id": "cf029446bd362b7aa74558cb21dc374c7784e849",
      "new_mode": 33188,
      "new_path": "clang/test/Sema/constexpr.c"
    },
    {
      "type": "modify",
      "old_id": "7034a45231281abcf1f6b5debd53cfb0ba29a0d3",
      "old_mode": 33188,
      "old_path": "clang/test/SemaCXX/cxx2c-constexpr-placement-new.cpp",
      "new_id": "657915dea45f31819c0e7a16d78b3127e743f7f2",
      "new_mode": 33188,
      "new_path": "clang/test/SemaCXX/cxx2c-constexpr-placement-new.cpp"
    }
  ]
}
