[6.0🍒][Explicit Module Builds][SwiftDrver] Cherry-pick Explicit Module Loading fixes and improvements #1575
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Explanation:
This PR is a collection of Explicit Module Build improvements and fixes:
[Explicit Module Builds] Specify which Clang module dependencies are bridging header dependencies #1571:
When passing in
-explicit-swift-module-map-file
, specify which Clang modules are dependencies of textual headers of the main module and binary Swift module dependencies. This relies on a new entry-point inlibSwiftScan
:swiftscan_swift_binary_detail_get_header_dependency_module_dependencies
. The compiler will then use this information to determine which Clang modules require an explicit-fmodule-map-file
ClangImporter input.[Explicit Module Builds] When '-explain-module-dependency' encounters the target Swift module, continue enumerating other possible paths #1565:
Covers the case where not all paths were printed with
-explain-module-dependency
.Risk: Low. Code-paths disabled by-default and the changes are meant to improve overall soundness and performance of builds.
Testing: Each of the above changes has corresponding test-suite additions.
Reviewed By: @nkcsgexi