)]}'
{
  "commit": "8a3aa549299337ffee8d808bf7d997b7cb1f99fe",
  "tree": "a731fb1719c431b236bdddeefbe97536b4e0d4c8",
  "parents": [
    "b66fd30e4b3943460a6cc030491043502bd3b65d"
  ],
  "author": {
    "name": "Patrick Palka",
    "email": "ppalka@redhat.com",
    "time": "Fri Jun 05 17:05:33 2026 -0400"
  },
  "committer": {
    "name": "Patrick Palka",
    "email": "ppalka@redhat.com",
    "time": "Fri Jun 05 17:05:33 2026 -0400"
  },
  "message": "c++/modules: disable dependent ADL inside header unit [PR125334]\n\nThis PR reports that building \u003cbits/stdc++.h\u003e as a header unit later\nslows down initial std module stream-in by around 2x compared to if\nthe std module is built without the header unit, i.e.\n\n  g++ -fmodules -fsearch-include-path bits/std.cc\n  g++ -fmodules testcase.C # 15% slower vs before r16-6311\n\nvs\n\n  g++ -fmodules -fsearch-include-path bits/stdc++.h bits/std.cc\n  g++ -fmodules testcase.C # 100% slower vs before r16-6311\n\nThis happens after the dependent ADL patch r16-6311.  My initial theory\nfor the slowdown was that the ADL step adds in many more dependency edges\nbetween entities and results in larger SCC clusters, making lazy loading\nless lazy, but the number of overall clusters doesn\u0027t seem to significantly\nbefore/after the patch.  So I have no idea why there\u0027s such a big slowdown\nand why header units are affected more.\n\nBut my basic understanding of the dependent ADL part of reachability\nanalysis is that it\u0027s not really needed when building a header unit\nbecause header units don\u0027t discard or hide any entities.\n\nSo this patch disables it for header units which restores std module\nstream-in back to pre r16-6311 levels when \u003cbits/stdc++.h\u003e is built as a\nheader unit.  When built without the header unit then std module stream-in\nis still about 15% slower.  Maybe there\u0027s ways to safely speed up that\ncase too (e.g. only add dependency edges to GMF entities?) but I\u0027ll\nleave that as future work.\n\n\tPR c++/125334\n\ngcc/cp/ChangeLog:\n\n\t* module.cc (depset::hash::add_dependent_adl_entities):\n\tDisable when inside a header unit.\n\nReviewed-by: Jason Merrill \u003cjason@redhat.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "223ab33d54542f184ef6340ca3db3a8d1aaba730",
      "old_mode": 33188,
      "old_path": "gcc/cp/module.cc",
      "new_id": "d81db520bab839177677ff5b6e4ee0939686f85f",
      "new_mode": 33188,
      "new_path": "gcc/cp/module.cc"
    }
  ]
}
