diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td --- a/clang/include/clang/Driver/Options.td +++ b/clang/include/clang/Driver/Options.td @@ -846,6 +846,7 @@ def Xpreprocessor : Separate<["-"], "Xpreprocessor">, Group, HelpText<"Pass to the preprocessor">, MetaVarName<"">; def X_Flag : Flag<["-"], "X">, Group; +def X_Joined : Joined<["-"], "X">, IgnoredGCCCompat; def Z_Flag : Flag<["-"], "Z">, Group; def all__load : Flag<["-"], "all_load">; def allowable__client : Separate<["-"], "allowable_client">; diff --git a/clang/test/Misc/warn-not-error-Xfoo.c b/clang/test/Misc/warn-not-error-Xfoo.c new file mode 100644 --- /dev/null +++ b/clang/test/Misc/warn-not-error-Xfoo.c @@ -0,0 +1,14 @@ +// RUN: %clang -c -Xfoo %s 2>&1 | FileCheck --check-prefix=CHECK_STANDALONE_FOO %s +// RUN: %clang -c -Xfoo=bar %s 2>&1 | FileCheck --check-prefix=CHECK_JOINED_FOO %s + +// This test ensures that we only warn on -X and -X +// in case it is used downstream. If we error, we can't ignore it and some +// use of these (ignored) flags are in legacy use. +// TODO: Deprecate with timebox warning so consumers can respond. + +// CHECK_STANDALONE_FOO: warning: argument unused during compilation: '-Xfoo' [-Wunused-command-line-argument] +// CHECK_JOINED_FOO: warning: argument unused during compilation: '-Xfoo=bar' [-Wunused-command-line-argument] + +// CHECK-NOT: clang{.*}: error: unknown argument: + +void f(void) {}