================
@@ -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")
+
+        # Building the modules needs to happen before the other script commands
+        # are executed. Therefore the commands are added to the front of the
+        # list.
+        if has_std_compat_module:
+            script.insert(
+                0,
+                "%dbg(MODULE std.compat) %{cxx} %{flags} %{compile_flags} "
----------------
ldionne wrote:

I'm not a big fan of introducing a new `%{module_flags}` substitution here. 
Those are fundamental substitutions and we should try not to add new ones 
unless strictly required, but in this case it's kind of a workaround for the 
chicken-and-egg problem you mention. Instead, we could perhaps instead do 
(pseudo-code):

```
%dbg(MODULE std.compat) %{cxx} %{flags} {substitutions['%{compile_flags}']}
```

Basically, we'd evaluate the `%{compile_flags}` substitution right here instead 
of delaying it until the test actually runs. Then we could add `std.pcm` to 
`%{compile_flags}` in a mechanism similar to `ADDITIONAL_COMPILE_FLAGS` and it 
should all work.

https://github.com/llvm/llvm-project/pull/76246
_______________________________________________
llvm-branch-commits mailing list
llvm-branch-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits

Reply via email to