)]}'
{
  "commit": "38f153c7a7f1dd060d3afabc05f0fcb0585a10cb",
  "tree": "00447c2f7b1d20ddefbf6961038c5dfed6e8e30b",
  "parents": [
    "8af8a60d544afaeac4834bb78f6b55bc890fb5fd"
  ],
  "author": {
    "name": "Prerona Chaudhuri",
    "email": "pchaudhuri@nvidia.com",
    "time": "Tue May 05 01:28:21 2026 +0530"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Mon May 04 12:58:21 2026 -0700"
  },
  "message": "[TableGen] Fix null-pointer assert in RecordVal::setValue on failed cast (#195492)\n\nWhen setValue\u0027s getCastTo failed, Value was overwritten with nullptr\ninstead of being left untouched.\nThe \"no value set\" sentinel is UnsetInit, not nullptr, so a downstream\nRecordResolver::resolve that called isa\u003cUnsetInit\u003e(RV-\u003egetValue()) would\nassert on the null pointer when a later def tried to resolve an\nexpression referring to that field.\n\nCompute the cast into a local and only commit to Value on success, so a\ntype-incompatible override (e.g. redeclaring an int field as string in a\nsubclass) reports the existing \"is incompatible\" error and exits cleanly\ninstead of aborting.\n\nFixes issue : https://github.com/llvm/llvm-project/issues/184879\nAssisted by Claude.",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "4e931209e3e7c0c963712b4e2b5c7109acf78877",
      "old_mode": 33188,
      "old_path": "llvm/lib/TableGen/Record.cpp",
      "new_id": "3395d2dd10a1b8603fbd74f9a2cfb53d79049c64",
      "new_mode": 33188,
      "new_path": "llvm/lib/TableGen/Record.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "7d66e0411a5b8309a3299a33dd540bf2e6ed2941",
      "new_mode": 33188,
      "new_path": "llvm/test/TableGen/incompatible-field-override.td"
    }
  ]
}
