Index: clang/lib/Driver/ToolChains/Clang.cpp =================================================================== --- clang/lib/Driver/ToolChains/Clang.cpp +++ clang/lib/Driver/ToolChains/Clang.cpp @@ -3772,6 +3772,10 @@ Args.ClaimAllArgs(options::OPT_fmodules_disable_diagnostic_validation); } + // Claim `-fmodule-output` and `-fmodule-output=` to avoid unused warnings. + Args.ClaimAllArgs(options::OPT_fmodule_output); + Args.ClaimAllArgs(options::OPT_fmodule_output_EQ); + return HaveModules; } Index: clang/test/Driver/module-output.cppm =================================================================== --- clang/test/Driver/module-output.cppm +++ clang/test/Driver/module-output.cppm @@ -6,6 +6,9 @@ // Tests that the .pcm file will be generated in the same path with the specified one in the comamnd line. // RUN: %clang -std=c++20 %s -fmodule-output=%t/pcm/Hello.pcm -o %t/Hello.o \ // RUN: -c -### 2>&1 | FileCheck %s --check-prefix=CHECK-SPECIFIED +// +// RUN: %clang -std=c++20 %s -fmodule-output=Hello.pcm -fmodule-output -c -fsyntax-only \ +// RUN: -### 2>&1 | FileCheck %s --check-prefix=CHECK-NOT-USED export module Hello; @@ -13,3 +16,7 @@ // CHECK: "-emit-obj" {{.*}}"-main-file-name" "module-output.cppm" {{.*}}"-o" "{{.*}}/Hello.o" "-x" "pcm" "{{.*}}/Hello.pcm" // CHECK-SPECIFIED: "-emit-module-interface" {{.*}}"-main-file-name" "module-output.cppm" {{.*}}"-o" "{{.*}}/Hello.pcm" "-x" "c++" "{{.*}}/module-output.cppm" // CHECK-SPECIFIED: "-emit-obj" {{.*}}"-main-file-name" "module-output.cppm" {{.*}}"-o" "{{.*}}/Hello.o" "-x" "pcm" "{{.*}}/Hello.pcm" +// CHECK-NOT-USED-NOT: warning: argument unused during compilation: '-fmodule-output' +// CHECK-NOT-USED-NOT: warning: argument unused during compilation: '-fmodule-output=Hello.pcm' +// CHECK-NOT-USED-NOT: "-fmodule-output" +// CHECK-NOT-USED-NOT: "-fmodule-output="