)]}'
{
  "commit": "84afdb477133cb04cf842d2d57d4e5e1461ba924",
  "tree": "a4c30ca2e59eb61b3636ed49001a73d2b458856b",
  "parents": [
    "278261413bbc64fd21d763fdc115420be39cc3b8"
  ],
  "author": {
    "name": "Peter Rong",
    "email": "peterrong96@gmail.com",
    "time": "Sat Aug 01 12:44:24 2026 -0700"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Sat Aug 01 12:44:24 2026 -0700"
  },
  "message": "[lld][MachO] Avoid quadratic iteration over already-folded symbols during ICF (#213339)\n\n`ConcatInputSection::foldIdentical()` clears the folded functions\n`originalUnwindEntry`.\nHowever, it cleared every symbol: with N members, the repeated clearing\nis **O(N²)**.\nThis is redundant: we should only remove the incoming `copy-\u003esymbols`.\n\nThis patch moves the removing loop ahead and adds more clear comments on\nwhy we need to skip the first element.\nAlso added a new `lld/test/MachO/icf-scale-same-class.s` with 500K\nidentical functions as a stress test, which would\u0027ve taken minutes to\nlink, and less than a second with the patch.\n\nTesting on real-world app (IRPGO instrumentation + ICF) find that we\nachieved a 19x speed up (1:14:42 -\u003e 3:55)",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "4c4f644889d5fbc4cee6bed9e681309fcfde7f83",
      "old_mode": 33188,
      "old_path": "lld/MachO/InputSection.cpp",
      "new_id": "d977830161a8e651fda2bbfe2ed5b4118e03f327",
      "new_mode": 33188,
      "new_path": "lld/MachO/InputSection.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "7dc19bae6dd60e53dea95e71dba7fb0110f9a331",
      "new_mode": 33188,
      "new_path": "lld/test/MachO/icf-scale-same-class.s"
    }
  ]
}
