@@ -53,6 +53,10 @@ def CC1AsOption : OptionFlag;
53
53
// are made available when the driver is running in DXC compatibility mode.
54
54
def DXCOption : OptionFlag;
55
55
56
+ // CLDXCOption - This is a cl.exe/dxc.exe compatibility option. Options with this flag
57
+ // are made available when the driver is running in CL/DXC compatibility mode.
58
+ def CLDXCOption : OptionFlag;
59
+
56
60
// NoDriverOption - This option should not be accepted by the driver.
57
61
def NoDriverOption : OptionFlag;
58
62
@@ -6852,7 +6856,7 @@ def defsym : Separate<["-"], "defsym">,
6852
6856
// clang-cl Options
6853
6857
//===----------------------------------------------------------------------===//
6854
6858
6855
- def cl_Group : OptionGroup<"<clang-cl options>">,
6859
+ def cl_Group : OptionGroup<"<clang-cl options>">, Flags<[CLDXCOption]>,
6856
6860
HelpText<"CL.EXE COMPATIBILITY OPTIONS">;
6857
6861
6858
6862
def cl_compile_Group : OptionGroup<"<clang-cl compile-only options>">,
@@ -6861,45 +6865,42 @@ def cl_compile_Group : OptionGroup<"<clang-cl compile-only options>">,
6861
6865
def cl_ignored_Group : OptionGroup<"<clang-cl ignored options>">,
6862
6866
Group<cl_Group>;
6863
6867
6864
- class CLFlagOpts<list<OptionFlag> flags>
6865
- : Flags<!listconcat(flags, [NoXarchOption])>;
6868
+ class CLFlag<string name> : Option<["/", "-"], name, KIND_FLAG>,
6869
+ Group<cl_Group>, Flags<[CLOption, NoXarchOption]>;
6870
+
6871
+ class CLDXCFlag<string name> : Option<["/", "-"], name, KIND_FLAG>,
6872
+ Group<cl_Group>, Flags<[CLDXCOption, NoXarchOption]>;
6873
+
6874
+ class CLCompileFlag<string name> : Option<["/", "-"], name, KIND_FLAG>,
6875
+ Group<cl_compile_Group>, Flags<[CLOption, NoXarchOption]>;
6866
6876
6867
- class CLFlag<string name, list<OptionFlag> flags = [CLOption]>
6868
- : Option<["/", "-"], name, KIND_FLAG>,
6869
- Group<cl_Group>, CLFlagOpts<flags>;
6877
+ class CLIgnoredFlag<string name> : Option<["/", "-"], name, KIND_FLAG>,
6878
+ Group<cl_ignored_Group>, Flags<[CLOption, NoXarchOption]>;
6870
6879
6871
- class CLCompileFlag<string name, list<OptionFlag> flags = [CLOption]>
6872
- : Option<["/", "-"], name, KIND_FLAG>,
6873
- Group<cl_compile_Group>, CLFlagOpts<flags>;
6880
+ class CLJoined<string name> : Option<["/", "-"], name, KIND_JOINED>,
6881
+ Group<cl_Group>, Flags<[CLOption, NoXarchOption]>;
6874
6882
6875
- class CLIgnoredFlag<string name, list<OptionFlag> flags = [CLOption]>
6876
- : Option<["/", "-"], name, KIND_FLAG>,
6877
- Group<cl_ignored_Group>, CLFlagOpts<flags>;
6883
+ class CLDXCJoined<string name> : Option<["/", "-"], name, KIND_JOINED>,
6884
+ Group<cl_Group>, Flags<[CLDXCOption, NoXarchOption]>;
6878
6885
6879
- class CLJoined<string name, list<OptionFlag> flags = [CLOption]>
6880
- : Option<["/", "-"], name, KIND_JOINED>,
6881
- Group<cl_Group>, CLFlagOpts<flags>;
6886
+ class CLCompileJoined<string name> : Option<["/", "-"], name, KIND_JOINED>,
6887
+ Group<cl_compile_Group>, Flags<[CLOption, NoXarchOption]>;
6882
6888
6883
- class CLCompileJoined<string name, list<OptionFlag> flags = [CLOption]>
6884
- : Option<["/", "-"], name, KIND_JOINED>,
6885
- Group<cl_compile_Group>, CLFlagOpts<flags>;
6889
+ class CLIgnoredJoined<string name> : Option<["/", "-"], name, KIND_JOINED>,
6890
+ Group<cl_ignored_Group>, Flags<[CLOption, NoXarchOption, HelpHidden]>;
6886
6891
6887
- class CLIgnoredJoined<string name, list<OptionFlag> flags = [CLOption]>
6888
- : Option<["/", "-"], name, KIND_JOINED>,
6889
- Group<cl_ignored_Group>, CLFlagOpts<!listconcat(flags, [HelpHidden])>;
6892
+ class CLJoinedOrSeparate<string name> : Option<["/", "-"], name,
6893
+ KIND_JOINED_OR_SEPARATE>, Group<cl_Group>, Flags<[CLOption, NoXarchOption]>;
6890
6894
6891
- class CLJoinedOrSeparate<string name, list<OptionFlag> flags = [CLOption]>
6892
- : Option<["/", "-"], name, KIND_JOINED_OR_SEPARATE>,
6893
- Group<cl_Group>, CLFlagOpts<flags>;
6895
+ class CLDXCJoinedOrSeparate<string name> : Option<["/", "-"], name,
6896
+ KIND_JOINED_OR_SEPARATE>, Group<cl_Group>, Flags<[CLDXCOption, NoXarchOption]>;
6894
6897
6895
- class CLCompileJoinedOrSeparate<string name,
6896
- list<OptionFlag> flags = [CLOption]>
6897
- : Option<["/", "-"], name, KIND_JOINED_OR_SEPARATE>,
6898
- Group<cl_compile_Group>, CLFlagOpts<flags>;
6898
+ class CLCompileJoinedOrSeparate<string name> : Option<["/", "-"], name,
6899
+ KIND_JOINED_OR_SEPARATE>, Group<cl_compile_Group>,
6900
+ Flags<[CLOption, NoXarchOption]>;
6899
6901
6900
- class CLRemainingArgsJoined<string name, list<OptionFlag> flags = [CLOption]>
6901
- : Option<["/", "-"], name, KIND_REMAINING_ARGS_JOINED>,
6902
- Group<cl_Group>, CLFlagOpts<flags>;
6902
+ class CLRemainingArgsJoined<string name> : Option<["/", "-"], name,
6903
+ KIND_REMAINING_ARGS_JOINED>, Group<cl_Group>, Flags<[CLOption, NoXarchOption]>;
6903
6904
6904
6905
// Aliases:
6905
6906
// (We don't put any of these in cl_compile_Group as the options they alias are
@@ -6970,15 +6971,15 @@ def _SLASH_help : CLFlag<"help">, Alias<help>,
6970
6971
def _SLASH_HELP : CLFlag<"HELP">, Alias<help>;
6971
6972
def _SLASH_hotpatch : CLFlag<"hotpatch">, Alias<fms_hotpatch>,
6972
6973
HelpText<"Create hotpatchable image">;
6973
- def _SLASH_I : CLJoinedOrSeparate <"I", [CLOption, DXCOption] >,
6974
+ def _SLASH_I : CLDXCJoinedOrSeparate <"I">,
6974
6975
HelpText<"Add directory to include search path">, MetaVarName<"<dir>">,
6975
6976
Alias<I>;
6976
6977
def _SLASH_J : CLFlag<"J">, HelpText<"Make char type unsigned">,
6977
6978
Alias<funsigned_char>;
6978
6979
6979
6980
// The _SLASH_O option handles all the /O flags, but we also provide separate
6980
6981
// aliased options to provide separate help messages.
6981
- def _SLASH_O : CLJoined <"O", [CLOption, DXCOption] >,
6982
+ def _SLASH_O : CLDXCJoined <"O">,
6982
6983
HelpText<"Set multiple /O flags at once; e.g. '/O2y-' for '/O2 /Oy-'">,
6983
6984
MetaVarName<"<flags>">;
6984
6985
def : CLFlag<"O1">, Alias<_SLASH_O>, AliasArgs<["1"]>,
@@ -6991,7 +6992,7 @@ def : CLFlag<"Ob1">, Alias<_SLASH_O>, AliasArgs<["b1"]>,
6991
6992
HelpText<"Only inline functions explicitly or implicitly marked inline">;
6992
6993
def : CLFlag<"Ob2">, Alias<_SLASH_O>, AliasArgs<["b2"]>,
6993
6994
HelpText<"Inline functions as deemed beneficial by the compiler">;
6994
- def : CLFlag <"Od", [CLOption, DXCOption] >, Alias<_SLASH_O>, AliasArgs<["d"]>,
6995
+ def : CLDXCFlag <"Od">, Alias<_SLASH_O>, AliasArgs<["d"]>,
6995
6996
HelpText<"Disable optimization">;
6996
6997
def : CLFlag<"Og">, Alias<_SLASH_O>, AliasArgs<["g"]>,
6997
6998
HelpText<"No effect">;
0 commit comments