================
@@ -131,13 +138,65 @@ def parseScript(test, preamble):
script += preamble
script += scriptInTest
+ has_std_module = False
+ has_std_compat_module = False
+ for module in modules:
+ if module == "std":
+ has_std_module = True
+ elif module == "std.compat":
+ has_std_compat_module = True
+ else:
+ script.insert(
+ 0,
+ f"echo \"The module '{module}' is not valid, use 'std' or
'std.compat'\"",
+ )
+ script.insert(1, "false")
+ return script
+
+ if modules:
+ # This flag is needed for both modules.
+ moduleCompileFlags.append("-fprebuilt-module-path=%T")
----------------
ChuanqiXu9 wrote:
I didn't read the patch completely so I don't know the concatenated command
line. But the behavior matches current expectation of clang. Now when clang
sees an `import` for a named module, clang will only find that named module by
`-fprebuilt-module-path` or
`-fmodule-file=<module-name>=<path-to-the-module-file>`.
I guess you're talking about the case about:
```
clang++ std.compat.pcm use.cc -o use
```
where use.cc uses std.compat module.
This command line will be split into 3 processes like:
```
clang_cc1 std.compat.pcm -c -o std.compat.o
clang_cc1 use.cc -c -o use.o
clang_cc1 std.compat.o use.o -o use
```
So the second step won't know about `std.compat.pcm`.
While it is technically possible to improve that, I feel it is not so useful
since the major expected users of modules should use a build system instead of
concatenating the command line manually.
https://github.com/llvm/llvm-project/pull/76246
_______________________________________________
llvm-branch-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits