)]}'
{
  "commit": "f7549a9b636570e10df5301a920da5db3334f6ae",
  "tree": "03e6db9bdcb4bc9eb177bc67ba56988403955d86",
  "parents": [
    "751ed7b16433d2279286d0765f51cd36edc6d771"
  ],
  "author": {
    "name": "Fangrui Song",
    "email": "i@maskray.me",
    "time": "Tue Sep 01 19:17:08 2026 -0700"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Tue Sep 01 19:17:08 2026 -0700"
  },
  "message": "[ADT][SelectionDAG] Unique SDNodes in a UniquingSet (#220195)\n\nCSEMap keys SDNodes by a serialized FoldingSetNodeID. Every lookup\nprofiles the opcode, the VT list and the operands into a buffer, and\nevery probe rebuilds the candidate\u0027s whole profile to compare against\nit.\n\nUniquingSet compared a key against Info::getKey(*N), building a key from\nthe candidate on every probe. Add isEqual to the Info contract,\ndefaulting to that comparison, and expose a FoldingSetNodeID\u0027s\naccumulated words as a FoldingSetNodeIDRef so an Info that carries one\ncan hash it.\n\nKey nodes by SDNodeKey, which holds those fields directly and leaves\nonly what AddNodeIDCustom contributes serialized in a tail, which is\nempty for most opcodes. A lookup site keeps its ID.AddXxx lines: the key\nforwards them to the tail. isEqual matches the key against a candidate\u0027s\nfields and builds only the tail; an assertions build cross-checks the\nresult against the profile both would have had.\n\nAided by Opus 5",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "a2ab413dcec9454df28dc8b6f8e8c6c030f64c7e",
      "old_mode": 33188,
      "old_path": "llvm/include/llvm/ADT/FoldingSet.h",
      "new_id": "b005a9e8531786e059ea3c142605d7c1c0eac3ae",
      "new_mode": 33188,
      "new_path": "llvm/include/llvm/ADT/FoldingSet.h"
    },
    {
      "type": "modify",
      "old_id": "b40fb4ef9fb00559fddab92bb6ddb047b66d1eba",
      "old_mode": 33188,
      "old_path": "llvm/include/llvm/CodeGen/SelectionDAG.h",
      "new_id": "fc72f2a2ba0c665d1f2a11e4ac3a1d0cb9d7d660",
      "new_mode": 33188,
      "new_path": "llvm/include/llvm/CodeGen/SelectionDAG.h"
    },
    {
      "type": "modify",
      "old_id": "26d9ec47f5a98a0895e34f5d28b34bb12a1f3a8c",
      "old_mode": 33188,
      "old_path": "llvm/include/llvm/CodeGen/SelectionDAGNodes.h",
      "new_id": "0fa4385c53bcc3d978e7d81377c73d303a9af2ac",
      "new_mode": 33188,
      "new_path": "llvm/include/llvm/CodeGen/SelectionDAGNodes.h"
    },
    {
      "type": "modify",
      "old_id": "f06c2b40fb768ad1aeb775537e5629da88d27ca5",
      "old_mode": 33188,
      "old_path": "llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp",
      "new_id": "2218e5f59752fb06d156a91071ed2c6e1b7ede78",
      "new_mode": 33188,
      "new_path": "llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp"
    },
    {
      "type": "modify",
      "old_id": "1b68c1f3163762cc0d6b6ab8ddc20780ee645fcf",
      "old_mode": 33188,
      "old_path": "llvm/unittests/ADT/FoldingSet.cpp",
      "new_id": "89d66808fe74ed1b49e53cdd16d4d9814b1e2092",
      "new_mode": 33188,
      "new_path": "llvm/unittests/ADT/FoldingSet.cpp"
    }
  ]
}
