)]}'
{
  "commit": "9403c2d64d63c16a09739d943eaa22b8e3499b7a",
  "tree": "d95907ffa7a9268e831a9709044968764b750fbc",
  "parents": [
    "986d7aa675e957e0160aeb2f045a6abf1bf2082e"
  ],
  "author": {
    "name": "Naveen Seth Hanig",
    "email": "naveen.hanig@outlook.com",
    "time": "Tue Aug 19 00:51:08 2025 +0530"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Mon Aug 18 21:21:08 2025 +0200"
  },
  "message": "Reland [clang][modules-driver] Add scanner to detect C++20 module presence (#153497)\n\nThis patch is part of a series to support driver managed module builds\nfor C++ named modules and Clang modules.\nThis introduces a scanner that detects C++ named module usage early in\nthe driver with only negligible overhead.\n\nFor now, it is enabled only with the `-fmodules-driver` flag and serves\nsolely diagnostic purposes. In the future, the scanner will be enabled\nfor any (modules-driver compatible) compilation with two or more inputs,\nand will help the driver determine whether to implicitly enable the\nmodules driver.\n\nSince the scanner adds very little overhead, we are also exploring\nenabling it for compilations with only a single input. This approach\ncould allow us to detect `import std` usage in a single-file\ncompilation, which would then activate the modules driver. For\nperformance measurements on this, see\nhttps://github.com/naveen-seth/llvm-dev-cxx-modules-check-benchmark.\n\nRFC for driver managed module builds:\n\nhttps://discourse.llvm.org/t/rfc-modules-support-simple-c-20-modules-use-from-the-clang-driver-without-a-build-system\n\nThis patch relands the reland (2d31fc8) for commit ded1426. The earlier\nreland failed due to a missing link dependency on `clangLex`. This\nreland fixes the issue by adding the link dependency after discussing it\nin the following RFC:\n\nhttps://discourse.llvm.org/t/rfc-driver-link-the-driver-against-clangdependencyscanning-clangast-clangfrontend-clangserialization-and-clanglex",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "0f17f4aa761eab69e6d6e9aab5878fb9b24e9ef5",
      "old_mode": 33188,
      "old_path": "clang/include/clang/Basic/DiagnosticDriverKinds.td",
      "new_id": "6df8f9932f30faca74255fec4a9fff1b9c4d85d3",
      "new_mode": 33188,
      "new_path": "clang/include/clang/Basic/DiagnosticDriverKinds.td"
    },
    {
      "type": "modify",
      "old_id": "2edf4da435366939230bd5f7f5a5f96895004ede",
      "old_mode": 33188,
      "old_path": "clang/include/clang/Basic/DiagnosticGroups.td",
      "new_id": "e29c4694fa5ea45e2e8838552a4de3d656f25798",
      "new_mode": 33188,
      "new_path": "clang/include/clang/Basic/DiagnosticGroups.td"
    },
    {
      "type": "modify",
      "old_id": "4d32552b7f85fda1c8fc810c8451c8e4756db678",
      "old_mode": 33188,
      "old_path": "clang/include/clang/Driver/Driver.h",
      "new_id": "b9b187ada8add0b62253d6fdc40f10b3805b7eec",
      "new_mode": 33188,
      "new_path": "clang/include/clang/Driver/Driver.h"
    },
    {
      "type": "modify",
      "old_id": "6a2f4575459b2ff33a81367cbf5f2df6cfee0517",
      "old_mode": 33188,
      "old_path": "clang/include/clang/Driver/Options.td",
      "new_id": "06bff0bf3b4ff7e9d5d4be021c0144e76f94d2b6",
      "new_mode": 33188,
      "new_path": "clang/include/clang/Driver/Options.td"
    },
    {
      "type": "modify",
      "old_id": "f9fec3998ca534214493baaba425471ea6879905",
      "old_mode": 33188,
      "old_path": "clang/include/clang/Lex/DependencyDirectivesScanner.h",
      "new_id": "c0b742d652a03177406980c5bae6c5fa9bc9815e",
      "new_mode": 33188,
      "new_path": "clang/include/clang/Lex/DependencyDirectivesScanner.h"
    },
    {
      "type": "modify",
      "old_id": "45782cbd9d16d90ad224e2d23beb4894e30ffa05",
      "old_mode": 33188,
      "old_path": "clang/lib/Driver/CMakeLists.txt",
      "new_id": "7c4f70b966c48a816910dc036872ad6242ddaa4d",
      "new_mode": 33188,
      "new_path": "clang/lib/Driver/CMakeLists.txt"
    },
    {
      "type": "modify",
      "old_id": "8c0bba938a09b2ef77755a92ff00494568ad3971",
      "old_mode": 33188,
      "old_path": "clang/lib/Driver/Driver.cpp",
      "new_id": "d682ffc832c83260774cf6c431166232aa70c28e",
      "new_mode": 33188,
      "new_path": "clang/lib/Driver/Driver.cpp"
    },
    {
      "type": "modify",
      "old_id": "9ccff5e3342d54e61e5df14a7ff5d97ce9f5d29f",
      "old_mode": 33188,
      "old_path": "clang/lib/Lex/DependencyDirectivesScanner.cpp",
      "new_id": "eee57c786442ab20e335f4ca12e9fe4d050142d4",
      "new_mode": 33188,
      "new_path": "clang/lib/Lex/DependencyDirectivesScanner.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "a434587a7875993eaf1390857551d5ed446183a5",
      "new_mode": 33188,
      "new_path": "clang/test/Driver/modules-driver-cxx20-module-usage-scanner.cpp"
    }
  ]
}
