https://github.com/CarvedCoder updated 
https://github.com/llvm/llvm-project/pull/174560

>From f2d386e156e2e3197e8e86510e5c23b034cefcd4 Mon Sep 17 00:00:00 2001
From: CarvedCoder <[email protected]>
Date: Wed, 7 Jan 2026 12:57:47 +0530
Subject: [PATCH 1/4] [Clang][Modules] Emit C++20 BMIs to working directory
 with -fmodule-output

---
 clang/lib/Driver/ToolChains/Clang.cpp | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/clang/lib/Driver/ToolChains/Clang.cpp 
b/clang/lib/Driver/ToolChains/Clang.cpp
index 8692200b40a69..ff67aa5ea0f81 100644
--- a/clang/lib/Driver/ToolChains/Clang.cpp
+++ b/clang/lib/Driver/ToolChains/Clang.cpp
@@ -3783,8 +3783,11 @@ 
clang::driver::tools::getCXX20NamedModuleOutputPath(const ArgList &Args,
   if (Arg *FinalOutput = Args.getLastArg(options::OPT_o);
       FinalOutput && Args.hasArg(options::OPT_c))
     OutputPath = FinalOutput->getValue();
-  else
-    OutputPath = BaseInput;
+  else{
+    llvm::sys::fs::current_path(OutputPath);
+    llvm::sys::path::append(OutputPath,llvm::sys::path::filename(BaseInput));
+  }
+
 
   const char *Extension = types::getTypeTempSuffix(types::TY_ModuleFile);
   llvm::sys::path::replace_extension(OutputPath, Extension);

>From 5f837b872252b0b31500797ae8d01e22c287c84f Mon Sep 17 00:00:00 2001
From: CarvedCoder <[email protected]>
Date: Wed, 7 Jan 2026 12:58:22 +0530
Subject: [PATCH 2/4] [Clang][Modules] Emit C++20 BMIs to working directory
 with -fmodule-output

---
 clang/lib/Driver/ToolChains/Clang.cpp | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/clang/lib/Driver/ToolChains/Clang.cpp 
b/clang/lib/Driver/ToolChains/Clang.cpp
index ff67aa5ea0f81..47f2306e2f528 100644
--- a/clang/lib/Driver/ToolChains/Clang.cpp
+++ b/clang/lib/Driver/ToolChains/Clang.cpp
@@ -3783,12 +3783,11 @@ 
clang::driver::tools::getCXX20NamedModuleOutputPath(const ArgList &Args,
   if (Arg *FinalOutput = Args.getLastArg(options::OPT_o);
       FinalOutput && Args.hasArg(options::OPT_c))
     OutputPath = FinalOutput->getValue();
-  else{
+  else {
     llvm::sys::fs::current_path(OutputPath);
-    llvm::sys::path::append(OutputPath,llvm::sys::path::filename(BaseInput));
+    llvm::sys::path::append(OutputPath, llvm::sys::path::filename(BaseInput));
   }
 
-
   const char *Extension = types::getTypeTempSuffix(types::TY_ModuleFile);
   llvm::sys::path::replace_extension(OutputPath, Extension);
   return OutputPath;

>From 969428f39e1bcbc4d33aecf8e88b6aa4d85a8d44 Mon Sep 17 00:00:00 2001
From: CarvedCoder <[email protected]>
Date: Wed, 7 Jan 2026 13:11:21 +0530
Subject: [PATCH 3/4] [Clang][Tests] Update reduced BMI output path
 expectations

---
 clang/test/Driver/module-fgen-reduced-bmi.cppm | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/clang/test/Driver/module-fgen-reduced-bmi.cppm 
b/clang/test/Driver/module-fgen-reduced-bmi.cppm
index 4b893ffbfaae8..63ee07c530f37 100644
--- a/clang/test/Driver/module-fgen-reduced-bmi.cppm
+++ b/clang/test/Driver/module-fgen-reduced-bmi.cppm
@@ -51,7 +51,7 @@
 
 // RUN: %clang -std=c++20 Hello.cppm --precompile -fmodules-reduced-bmi \
 // RUN:     -### 2>&1 | FileCheck Hello.cppm \
-// RUN:     --check-prefix=CHECK-OVERRIDE-WARN
+// RUN:     --check-prefix=CHECK-OVERRIDE-WARN-NOT
 
 // RUN: %clang -std=c++20 Hello.cppm --precompile -fmodules-reduced-bmi \
 // RUN:     -o Hello.pcm -### 2>&1 | FileCheck Hello.cppm \
@@ -74,7 +74,7 @@ export module Hello;
 // CHECK-NOT: -emit-module-interface
 // CHECK: "-fmodules-reduced-bmi"
 
-// CHECK-UNSPECIFIED: -fmodule-output=Hello.pcm
+// CHECK-UNSPECIFIED: -fmodule-output={{.*}}Hello.pcm
 
 // CHECK-NO-O: -fmodule-output=Hello.pcm
 // CHECK-ANOTHER-NAME: -fmodule-output=AnotherName.pcm
@@ -83,7 +83,7 @@ export module Hello;
 // flag.
 // CHECK-EMIT-MODULE-INTERFACE: -emit-module-interface
 
-// CHECK-OVERRIDE-WARN: warning: the implicit output of reduced BMI may be 
overrided by the output file specified by '--precompile'. 
{{.*}}-Wreduced-bmi-output-overrided
+// CHECK-OVERRIDE-WARN-NOT: warning:
 
 // NO_WARN-NOT: warning
 

>From 2930ee328686a0f94473db484e8ec10c954400e8 Mon Sep 17 00:00:00 2001
From: CarvedCoder <[email protected]>
Date: Thu, 8 Jan 2026 15:38:58 +0530
Subject: [PATCH 4/4] clang: Update CHECK-OVERRIDE-WARN for reduced BMI output

---
 .../test/Driver/module-fgen-reduced-bmi.cppm  | 20 +++++++------------
 clang/test/Driver/module-output.cppm          |  2 +-
 2 files changed, 8 insertions(+), 14 deletions(-)

diff --git a/clang/test/Driver/module-fgen-reduced-bmi.cppm 
b/clang/test/Driver/module-fgen-reduced-bmi.cppm
index 63ee07c530f37..0199bf8309bfe 100644
--- a/clang/test/Driver/module-fgen-reduced-bmi.cppm
+++ b/clang/test/Driver/module-fgen-reduced-bmi.cppm
@@ -48,14 +48,10 @@
 // RUN: %clang -std=c++20 Hello.cppm --precompile -fmodules-reduced-bmi \
 // RUN:     -o Hello.full.pcm -### 2>&1 | FileCheck Hello.cppm \
 // RUN:     --check-prefix=CHECK-EMIT-MODULE-INTERFACE
-
-// RUN: %clang -std=c++20 Hello.cppm --precompile -fmodules-reduced-bmi \
-// RUN:     -### 2>&1 | FileCheck Hello.cppm \
-// RUN:     --check-prefix=CHECK-OVERRIDE-WARN-NOT
-
-// RUN: %clang -std=c++20 Hello.cppm --precompile -fmodules-reduced-bmi \
-// RUN:     -o Hello.pcm -### 2>&1 | FileCheck Hello.cppm \
-// RUN:    --check-prefix=CHECK-OVERRIDE-WARN
+//
+// RUN: %clang -std=c++20 %t/Hello.cppm --precompile -fmodules-reduced-bmi \
+// RUN:     -o %t/Hello.pcm -### 2>&1 | FileCheck %t/Hello.cppm \
+// RUN:     --check-prefix=CHECK-OVERRIDE-WARN
 //
 // RUN: %clang -std=c++20 Hello.cc -fmodules-reduced-bmi -Wall -Werror \
 // RUN:     -c -o Hello.o -### 2>&1 | FileCheck Hello.cc
@@ -75,15 +71,13 @@ export module Hello;
 // CHECK: "-fmodules-reduced-bmi"
 
 // CHECK-UNSPECIFIED: -fmodule-output={{.*}}Hello.pcm
-
-// CHECK-NO-O: -fmodule-output=Hello.pcm
-// CHECK-ANOTHER-NAME: -fmodule-output=AnotherName.pcm
+// CHECK-NO-O: -fmodule-output={{.*}}Hello.pcm
+// CHECK-ANOTHER-NAME: -fmodule-output={{.*}}AnotherName.pcm
 
 // With `-emit-module-interface` specified, we should still see the 
`-emit-module-interface`
 // flag.
 // CHECK-EMIT-MODULE-INTERFACE: -emit-module-interface
-
-// CHECK-OVERRIDE-WARN-NOT: warning:
+// CHECK-OVERRIDE-WARN: implicit output of reduced 
BMI{{.*}}-Wreduced-bmi-output-overrided
 
 // NO_WARN-NOT: warning
 
diff --git a/clang/test/Driver/module-output.cppm 
b/clang/test/Driver/module-output.cppm
index 197f1d85b0f9c..84f49737b1a6a 100644
--- a/clang/test/Driver/module-output.cppm
+++ b/clang/test/Driver/module-output.cppm
@@ -42,7 +42,7 @@ export module Hello;
 
 // CHECK: "-emit-module-interface" {{.*}}"-main-file-name" "Hello.cppm" 
{{.*}}"-o" "{{.*}}/output/Hello.pcm" "-x" "c++" "{{.*}}/Hello.cppm"
 // CHECK: "-emit-obj" {{.*}}"-main-file-name" "Hello.cppm" {{.*}}"-o" 
"{{.*}}/output/Hello.o" "-x" "pcm" "{{.*}}/output/Hello.pcm"
-
+// CHECK-CWD: -fmodule-output={{.*}}/build/Hello.pcm
 // MULTIPLE-ARCH: option '-fmodule-output' cannot be used with multiple arch 
options
 
 // CHECK-SPECIFIED: "-emit-module-interface" {{.*}}"-main-file-name" 
"Hello.cppm" {{.*}}"-o" "{{.*}}/pcm/Hello.pcm" "-x" "c++" "{{.*}}/Hello.cppm"

_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to