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