xref: /aosp_15_r20/external/clang/include/clang/Driver/CLCompatOptions.td (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li//===--- CLCompatOptions.td - Options for clang-cl ------------------------===//
2*67e74705SXin Li//
3*67e74705SXin Li//                     The LLVM Compiler Infrastructure
4*67e74705SXin Li//
5*67e74705SXin Li// This file is distributed under the University of Illinois Open Source
6*67e74705SXin Li// License. See LICENSE.TXT for details.
7*67e74705SXin Li//
8*67e74705SXin Li//===----------------------------------------------------------------------===//
9*67e74705SXin Li//
10*67e74705SXin Li//  This file defines the options accepted by clang-cl.
11*67e74705SXin Li//
12*67e74705SXin Li//===----------------------------------------------------------------------===//
13*67e74705SXin Li
14*67e74705SXin Lidef cl_Group : OptionGroup<"<clang-cl options>">,
15*67e74705SXin Li  HelpText<"CL.EXE COMPATIBILITY OPTIONS">;
16*67e74705SXin Li
17*67e74705SXin Lidef cl_compile_Group : OptionGroup<"<clang-cl compile-only options>">,
18*67e74705SXin Li  Group<cl_Group>;
19*67e74705SXin Li
20*67e74705SXin Lidef cl_ignored_Group : OptionGroup<"<clang-cl ignored options>">,
21*67e74705SXin Li  Group<cl_Group>;
22*67e74705SXin Li
23*67e74705SXin Liclass CLFlag<string name> : Option<["/", "-"], name, KIND_FLAG>,
24*67e74705SXin Li  Group<cl_Group>, Flags<[CLOption, DriverOption]>;
25*67e74705SXin Li
26*67e74705SXin Liclass CLCompileFlag<string name> : Option<["/", "-"], name, KIND_FLAG>,
27*67e74705SXin Li  Group<cl_compile_Group>, Flags<[CLOption, DriverOption]>;
28*67e74705SXin Li
29*67e74705SXin Liclass CLIgnoredFlag<string name> : Option<["/", "-"], name, KIND_FLAG>,
30*67e74705SXin Li  Group<cl_ignored_Group>, Flags<[CLOption, DriverOption, HelpHidden]>;
31*67e74705SXin Li
32*67e74705SXin Liclass CLJoined<string name> : Option<["/", "-"], name, KIND_JOINED>,
33*67e74705SXin Li  Group<cl_Group>, Flags<[CLOption, DriverOption]>;
34*67e74705SXin Li
35*67e74705SXin Liclass CLCompileJoined<string name> : Option<["/", "-"], name, KIND_JOINED>,
36*67e74705SXin Li  Group<cl_compile_Group>, Flags<[CLOption, DriverOption]>;
37*67e74705SXin Li
38*67e74705SXin Liclass CLIgnoredJoined<string name> : Option<["/", "-"], name, KIND_JOINED>,
39*67e74705SXin Li  Group<cl_ignored_Group>, Flags<[CLOption, DriverOption, HelpHidden]>;
40*67e74705SXin Li
41*67e74705SXin Liclass CLJoinedOrSeparate<string name> : Option<["/", "-"], name,
42*67e74705SXin Li  KIND_JOINED_OR_SEPARATE>, Group<cl_Group>, Flags<[CLOption, DriverOption]>;
43*67e74705SXin Li
44*67e74705SXin Liclass CLCompileJoinedOrSeparate<string name> : Option<["/", "-"], name,
45*67e74705SXin Li  KIND_JOINED_OR_SEPARATE>, Group<cl_compile_Group>,
46*67e74705SXin Li  Flags<[CLOption, DriverOption]>;
47*67e74705SXin Li
48*67e74705SXin Liclass CLRemainingArgsJoined<string name> : Option<["/", "-"], name,
49*67e74705SXin Li  KIND_REMAINING_ARGS_JOINED>, Group<cl_Group>, Flags<[CLOption, DriverOption]>;
50*67e74705SXin Li
51*67e74705SXin Li// Aliases:
52*67e74705SXin Li// (We don't put any of these in cl_compile_Group as the options they alias are
53*67e74705SXin Li// already in the right group.)
54*67e74705SXin Li
55*67e74705SXin Lidef _SLASH_Brepro : CLFlag<"Brepro">,
56*67e74705SXin Li  HelpText<"Emit an object file which can be reproduced over time">,
57*67e74705SXin Li  Alias<mincremental_linker_compatible>;
58*67e74705SXin Lidef _SLASH_Brepro_ : CLFlag<"Brepro-">,
59*67e74705SXin Li  HelpText<"Emit an object file which cannot be reproduced over time">,
60*67e74705SXin Li  Alias<mno_incremental_linker_compatible>;
61*67e74705SXin Lidef _SLASH_C : CLFlag<"C">,
62*67e74705SXin Li  HelpText<"Don't discard comments when preprocessing">, Alias<C>;
63*67e74705SXin Lidef _SLASH_c : CLFlag<"c">, HelpText<"Compile only">, Alias<c>;
64*67e74705SXin Lidef _SLASH_D : CLJoinedOrSeparate<"D">, HelpText<"Define macro">,
65*67e74705SXin Li  MetaVarName<"<macro[=value]>">, Alias<D>;
66*67e74705SXin Lidef _SLASH_E : CLFlag<"E">, HelpText<"Preprocess to stdout">, Alias<E>;
67*67e74705SXin Lidef _SLASH_fp_except : CLFlag<"fp:except">, HelpText<"">, Alias<ftrapping_math>;
68*67e74705SXin Lidef _SLASH_fp_except_ : CLFlag<"fp:except-">,
69*67e74705SXin Li  HelpText<"">, Alias<fno_trapping_math>;
70*67e74705SXin Lidef _SLASH_fp_fast : CLFlag<"fp:fast">, HelpText<"">, Alias<ffast_math>;
71*67e74705SXin Lidef _SLASH_fp_precise : CLFlag<"fp:precise">,
72*67e74705SXin Li  HelpText<"">, Alias<fno_fast_math>;
73*67e74705SXin Lidef _SLASH_fp_strict : CLFlag<"fp:strict">, HelpText<"">, Alias<fno_fast_math>;
74*67e74705SXin Lidef _SLASH_GA : CLFlag<"GA">, Alias<ftlsmodel_EQ>, AliasArgs<["local-exec"]>,
75*67e74705SXin Li  HelpText<"Assume thread-local variables are defined in the executable">;
76*67e74705SXin Lidef _SLASH_GR : CLFlag<"GR">, HelpText<"Enable emission of RTTI data">;
77*67e74705SXin Lidef _SLASH_GR_ : CLFlag<"GR-">, HelpText<"Disable emission of RTTI data">;
78*67e74705SXin Lidef _SLASH_GF_ : CLFlag<"GF-">, HelpText<"Disable string pooling">,
79*67e74705SXin Li  Alias<fwritable_strings>;
80*67e74705SXin Lidef _SLASH_GS : CLFlag<"GS">, HelpText<"Enable buffer security check">;
81*67e74705SXin Lidef _SLASH_GS_ : CLFlag<"GS-">, HelpText<"Disable buffer security check">;
82*67e74705SXin Lidef _SLASH_Gs : CLJoined<"Gs">, HelpText<"Set stack probe size">,
83*67e74705SXin Li  Alias<mstack_probe_size>;
84*67e74705SXin Lidef _SLASH_Gy : CLFlag<"Gy">, HelpText<"Put each function in its own section">,
85*67e74705SXin Li  Alias<ffunction_sections>;
86*67e74705SXin Lidef _SLASH_Gy_ : CLFlag<"Gy-">,
87*67e74705SXin Li  HelpText<"Don't put each function in its own section">,
88*67e74705SXin Li  Alias<fno_function_sections>;
89*67e74705SXin Lidef _SLASH_Gw : CLFlag<"Gw">, HelpText<"Put each data item in its own section">,
90*67e74705SXin Li  Alias<fdata_sections>;
91*67e74705SXin Lidef _SLASH_Gw_ : CLFlag<"Gw-">,
92*67e74705SXin Li  HelpText<"Don't put each data item in its own section">,
93*67e74705SXin Li  Alias<fno_data_sections>;
94*67e74705SXin Lidef _SLASH_help : CLFlag<"help">, Alias<help>,
95*67e74705SXin Li  HelpText<"Display available options">;
96*67e74705SXin Lidef _SLASH_HELP : CLFlag<"HELP">, Alias<help>;
97*67e74705SXin Lidef _SLASH_I : CLJoinedOrSeparate<"I">,
98*67e74705SXin Li  HelpText<"Add directory to include search path">, MetaVarName<"<dir>">,
99*67e74705SXin Li  Alias<I>;
100*67e74705SXin Lidef _SLASH_J : CLFlag<"J">, HelpText<"Make char type unsigned">,
101*67e74705SXin Li  Alias<funsigned_char>;
102*67e74705SXin Lidef _SLASH_O0 : CLFlag<"O0">, Alias<O0>;
103*67e74705SXin Li// /Oy- is handled by the /O option because /Oy- only has an effect on 32-bit.
104*67e74705SXin Lidef _SLASH_O : CLJoined<"O">, HelpText<"Optimization level">;
105*67e74705SXin Lidef _SLASH_Od : CLFlag<"Od">, HelpText<"Disable optimization">, Alias<O0>;
106*67e74705SXin Lidef _SLASH_Oi : CLFlag<"Oi">, HelpText<"Enable use of builtin functions">,
107*67e74705SXin Li  Alias<fbuiltin>;
108*67e74705SXin Lidef _SLASH_Oi_ : CLFlag<"Oi-">, HelpText<"Disable use of builtin functions">,
109*67e74705SXin Li  Alias<fno_builtin>;
110*67e74705SXin Lidef _SLASH_Os : CLFlag<"Os">, HelpText<"Optimize for size">, Alias<O>,
111*67e74705SXin Li  AliasArgs<["s"]>;
112*67e74705SXin Lidef _SLASH_Ot : CLFlag<"Ot">, HelpText<"Optimize for speed">, Alias<O>,
113*67e74705SXin Li  AliasArgs<["2"]>;
114*67e74705SXin Lidef _SLASH_QUESTION : CLFlag<"?">, Alias<help>,
115*67e74705SXin Li  HelpText<"Display available options">;
116*67e74705SXin Lidef _SLASH_Qvec : CLFlag<"Qvec">,
117*67e74705SXin Li  HelpText<"Enable the loop vectorization passes">, Alias<fvectorize>;
118*67e74705SXin Lidef _SLASH_Qvec_ : CLFlag<"Qvec-">,
119*67e74705SXin Li  HelpText<"Disable the loop vectorization passes">, Alias<fno_vectorize>;
120*67e74705SXin Lidef _SLASH_showIncludes : CLFlag<"showIncludes">,
121*67e74705SXin Li  HelpText<"Print info about included files to stderr">,
122*67e74705SXin Li  Alias<show_includes>;
123*67e74705SXin Lidef _SLASH_std : CLCompileJoined<"std:">,
124*67e74705SXin Li  HelpText<"Language standard to compile for">;
125*67e74705SXin Lidef _SLASH_U : CLJoinedOrSeparate<"U">, HelpText<"Undefine macro">,
126*67e74705SXin Li  MetaVarName<"<macro>">, Alias<U>;
127*67e74705SXin Lidef _SLASH_W0 : CLFlag<"W0">, HelpText<"Disable all warnings">, Alias<w>;
128*67e74705SXin Lidef _SLASH_W1 : CLFlag<"W1">, HelpText<"Enable -Wall">, Alias<Wall>;
129*67e74705SXin Lidef _SLASH_W2 : CLFlag<"W2">, HelpText<"Enable -Wall">, Alias<Wall>;
130*67e74705SXin Lidef _SLASH_W3 : CLFlag<"W3">, HelpText<"Enable -Wall">, Alias<Wall>;
131*67e74705SXin Lidef _SLASH_W4 : CLFlag<"W4">, HelpText<"Enable -Wall and -Wextra">, Alias<WCL4>;
132*67e74705SXin Lidef _SLASH_Wall : CLFlag<"Wall">, HelpText<"Enable -Wall and -Wextra">, Alias<WCL4>;
133*67e74705SXin Lidef _SLASH_WX : CLFlag<"WX">, HelpText<"Treat warnings as errors">,
134*67e74705SXin Li  Alias<W_Joined>, AliasArgs<["error"]>;
135*67e74705SXin Lidef _SLASH_WX_ : CLFlag<"WX-">, HelpText<"Do not treat warnings as errors">,
136*67e74705SXin Li  Alias<W_Joined>, AliasArgs<["no-error"]>;
137*67e74705SXin Lidef _SLASH_w_flag : CLFlag<"w">, HelpText<"Disable all warnings">, Alias<w>;
138*67e74705SXin Lidef _SLASH_wd4005 : CLFlag<"wd4005">, Alias<W_Joined>,
139*67e74705SXin Li  AliasArgs<["no-macro-redefined"]>;
140*67e74705SXin Lidef _SLASH_wd4100 : CLFlag<"wd4100">, Alias<W_Joined>,
141*67e74705SXin Li  AliasArgs<["no-unused-parameter"]>;
142*67e74705SXin Lidef _SLASH_wd4910 : CLFlag<"wd4910">, Alias<W_Joined>,
143*67e74705SXin Li  AliasArgs<["no-dllexport-explicit-instantiation-decl"]>;
144*67e74705SXin Lidef _SLASH_wd4996 : CLFlag<"wd4996">, Alias<W_Joined>,
145*67e74705SXin Li  AliasArgs<["no-deprecated-declarations"]>;
146*67e74705SXin Lidef _SLASH_vd : CLJoined<"vd">, HelpText<"Control vtordisp placement">,
147*67e74705SXin Li  Alias<vtordisp_mode_EQ>;
148*67e74705SXin Lidef _SLASH_Zc_sizedDealloc : CLFlag<"Zc:sizedDealloc">,
149*67e74705SXin Li  HelpText<"Enable C++14 sized global deallocation functions">,
150*67e74705SXin Li  Alias<fsized_deallocation>;
151*67e74705SXin Lidef _SLASH_Zc_sizedDealloc_ : CLFlag<"Zc:sizedDealloc-">,
152*67e74705SXin Li  HelpText<"Disable C++14 sized global deallocation functions">,
153*67e74705SXin Li  Alias<fno_sized_deallocation>;
154*67e74705SXin Lidef _SLASH_Zc_strictStrings : CLFlag<"Zc:strictStrings">,
155*67e74705SXin Li  HelpText<"Treat string literals as const">, Alias<W_Joined>,
156*67e74705SXin Li  AliasArgs<["error=c++11-compat-deprecated-writable-strings"]>;
157*67e74705SXin Lidef _SLASH_Zc_threadSafeInit : CLFlag<"Zc:threadSafeInit">,
158*67e74705SXin Li  HelpText<"Enable thread-safe initialization of static variables">,
159*67e74705SXin Li  Alias<fthreadsafe_statics>;
160*67e74705SXin Lidef _SLASH_Zc_threadSafeInit_ : CLFlag<"Zc:threadSafeInit-">,
161*67e74705SXin Li  HelpText<"Disable thread-safe initialization of static variables">,
162*67e74705SXin Li  Alias<fno_threadsafe_statics>;
163*67e74705SXin Lidef _SLASH_Zc_trigraphs : CLFlag<"Zc:trigraphs">,
164*67e74705SXin Li  HelpText<"Enable trigraphs">, Alias<ftrigraphs>;
165*67e74705SXin Lidef _SLASH_Zc_trigraphs_off : CLFlag<"Zc:trigraphs-">,
166*67e74705SXin Li  HelpText<"Disable trigraphs (default)">, Alias<fno_trigraphs>;
167*67e74705SXin Lidef _SLASH_Z7 : CLFlag<"Z7">,
168*67e74705SXin Li  HelpText<"Enable CodeView debug information in object files">;
169*67e74705SXin Lidef _SLASH_Zd : CLFlag<"Zd">,
170*67e74705SXin Li  HelpText<"Emit debug line number tables only">;
171*67e74705SXin Lidef _SLASH_Zi : CLFlag<"Zi">, Alias<_SLASH_Z7>,
172*67e74705SXin Li  HelpText<"Alias for /Z7. Does not produce PDBs.">;
173*67e74705SXin Lidef _SLASH_Zp : CLJoined<"Zp">,
174*67e74705SXin Li  HelpText<"Specify the default maximum struct packing alignment">,
175*67e74705SXin Li  Alias<fpack_struct_EQ>;
176*67e74705SXin Lidef _SLASH_Zp_flag : CLFlag<"Zp">,
177*67e74705SXin Li  HelpText<"Set the default maximum struct packing alignment to 1">,
178*67e74705SXin Li  Alias<fpack_struct_EQ>, AliasArgs<["1"]>;
179*67e74705SXin Lidef _SLASH_Zs : CLFlag<"Zs">, HelpText<"Syntax-check only">,
180*67e74705SXin Li  Alias<fsyntax_only>;
181*67e74705SXin Li
182*67e74705SXin Li
183*67e74705SXin Li// Non-aliases:
184*67e74705SXin Li
185*67e74705SXin Lidef _SLASH_arch : CLCompileJoined<"arch:">,
186*67e74705SXin Li  HelpText<"Set architecture for code generation">;
187*67e74705SXin Li
188*67e74705SXin Lidef _SLASH_M_Group : OptionGroup<"</M group>">, Group<cl_compile_Group>;
189*67e74705SXin Lidef _SLASH_volatile_Group : OptionGroup<"</volatile group>">,
190*67e74705SXin Li  Group<cl_compile_Group>;
191*67e74705SXin Li
192*67e74705SXin Lidef _SLASH_EH : CLJoined<"EH">, HelpText<"Exception handling model">;
193*67e74705SXin Lidef _SLASH_EP : CLFlag<"EP">,
194*67e74705SXin Li  HelpText<"Disable linemarker output and preprocess to stdout">;
195*67e74705SXin Lidef _SLASH_FA : CLFlag<"FA">,
196*67e74705SXin Li  HelpText<"Output assembly code file during compilation">;
197*67e74705SXin Lidef _SLASH_Fa : CLJoined<"Fa">,
198*67e74705SXin Li  HelpText<"Output assembly code to this file during compilation (with /FA)">,
199*67e74705SXin Li  MetaVarName<"<file or directory>">;
200*67e74705SXin Lidef _SLASH_fallback : CLCompileFlag<"fallback">,
201*67e74705SXin Li  HelpText<"Fall back to cl.exe if clang-cl fails to compile">;
202*67e74705SXin Lidef _SLASH_FI : CLJoinedOrSeparate<"FI">,
203*67e74705SXin Li  HelpText<"Include file before parsing">, Alias<include_>;
204*67e74705SXin Lidef _SLASH_Fe : CLJoined<"Fe">,
205*67e74705SXin Li  HelpText<"Set output executable file or directory (ends in / or \\)">,
206*67e74705SXin Li  MetaVarName<"<file or directory>">;
207*67e74705SXin Lidef _SLASH_Fi : CLCompileJoined<"Fi">,
208*67e74705SXin Li  HelpText<"Set preprocess output file name (with /P)">,
209*67e74705SXin Li  MetaVarName<"<file>">;
210*67e74705SXin Lidef _SLASH_Fo : CLCompileJoined<"Fo">,
211*67e74705SXin Li  HelpText<"Set output object file, or directory (ends in / or \\) (with /c)">,
212*67e74705SXin Li  MetaVarName<"<file or directory>">;
213*67e74705SXin Lidef _SLASH_GX : CLFlag<"GX">,
214*67e74705SXin Li  HelpText<"Enable exception handling">;
215*67e74705SXin Lidef _SLASH_GX_ : CLFlag<"GX-">,
216*67e74705SXin Li  HelpText<"Enable exception handling">;
217*67e74705SXin Lidef _SLASH_imsvc : CLJoinedOrSeparate<"imsvc">,
218*67e74705SXin Li  HelpText<"Add directory to system include search path, as if part of %INCLUDE%">,
219*67e74705SXin Li  MetaVarName<"<dir>">;
220*67e74705SXin Lidef _SLASH_LD : CLFlag<"LD">, HelpText<"Create DLL">;
221*67e74705SXin Lidef _SLASH_LDd : CLFlag<"LDd">, HelpText<"Create debug DLL">;
222*67e74705SXin Lidef _SLASH_link : CLRemainingArgsJoined<"link">,
223*67e74705SXin Li  HelpText<"Forward options to the linker">, MetaVarName<"<options>">;
224*67e74705SXin Lidef _SLASH_MD : Option<["/", "-"], "MD", KIND_FLAG>, Group<_SLASH_M_Group>,
225*67e74705SXin Li  Flags<[CLOption, DriverOption]>, HelpText<"Use DLL run-time">;
226*67e74705SXin Lidef _SLASH_MDd : Option<["/", "-"], "MDd", KIND_FLAG>, Group<_SLASH_M_Group>,
227*67e74705SXin Li  Flags<[CLOption, DriverOption]>, HelpText<"Use DLL debug run-time">;
228*67e74705SXin Lidef _SLASH_MT : Option<["/", "-"], "MT", KIND_FLAG>, Group<_SLASH_M_Group>,
229*67e74705SXin Li  Flags<[CLOption, DriverOption]>, HelpText<"Use static run-time">;
230*67e74705SXin Lidef _SLASH_MTd : Option<["/", "-"], "MTd", KIND_FLAG>, Group<_SLASH_M_Group>,
231*67e74705SXin Li  Flags<[CLOption, DriverOption]>, HelpText<"Use static debug run-time">;
232*67e74705SXin Lidef _SLASH_o : CLJoinedOrSeparate<"o">,
233*67e74705SXin Li  HelpText<"Set output file or directory (ends in / or \\)">,
234*67e74705SXin Li  MetaVarName<"<file or directory>">;
235*67e74705SXin Lidef _SLASH_P : CLFlag<"P">, HelpText<"Preprocess to file">;
236*67e74705SXin Lidef _SLASH_Tc : CLCompileJoinedOrSeparate<"Tc">,
237*67e74705SXin Li  HelpText<"Specify a C source file">, MetaVarName<"<filename>">;
238*67e74705SXin Lidef _SLASH_TC : CLCompileFlag<"TC">, HelpText<"Treat all source files as C">;
239*67e74705SXin Lidef _SLASH_Tp : CLCompileJoinedOrSeparate<"Tp">,
240*67e74705SXin Li  HelpText<"Specify a C++ source file">, MetaVarName<"<filename>">;
241*67e74705SXin Lidef _SLASH_TP : CLCompileFlag<"TP">, HelpText<"Treat all source files as C++">;
242*67e74705SXin Lidef _SLASH_volatile_iso : Option<["/", "-"], "volatile:iso", KIND_FLAG>,
243*67e74705SXin Li  Group<_SLASH_volatile_Group>, Flags<[CLOption, DriverOption]>,
244*67e74705SXin Li  HelpText<"Volatile loads and stores have standard semantics">;
245*67e74705SXin Lidef _SLASH_vmb : CLFlag<"vmb">,
246*67e74705SXin Li  HelpText<"Use a best-case representation method for member pointers">;
247*67e74705SXin Lidef _SLASH_vmg : CLFlag<"vmg">,
248*67e74705SXin Li  HelpText<"Use a most-general representation for member pointers">;
249*67e74705SXin Lidef _SLASH_vms : CLFlag<"vms">,
250*67e74705SXin Li  HelpText<"Set the default most-general representation to single inheritance">;
251*67e74705SXin Lidef _SLASH_vmm : CLFlag<"vmm">,
252*67e74705SXin Li  HelpText<"Set the default most-general representation to "
253*67e74705SXin Li           "multiple inheritance">;
254*67e74705SXin Lidef _SLASH_vmv : CLFlag<"vmv">,
255*67e74705SXin Li  HelpText<"Set the default most-general representation to "
256*67e74705SXin Li           "virtual inheritance">;
257*67e74705SXin Lidef _SLASH_volatile_ms  : Option<["/", "-"], "volatile:ms", KIND_FLAG>,
258*67e74705SXin Li  Group<_SLASH_volatile_Group>, Flags<[CLOption, DriverOption]>,
259*67e74705SXin Li  HelpText<"Volatile loads and stores have acquire and release semantics">;
260*67e74705SXin Lidef _SLASH_Zl : CLFlag<"Zl">,
261*67e74705SXin Li  HelpText<"Don't mention any default libraries in the object file">;
262*67e74705SXin Li
263*67e74705SXin Lidef _SLASH_Yc : CLJoined<"Yc">,
264*67e74705SXin Li  HelpText<"Generate a pch file for all code up to and including <filename>">,
265*67e74705SXin Li  MetaVarName<"<filename>">;
266*67e74705SXin Lidef _SLASH_Yu : CLJoined<"Yu">,
267*67e74705SXin Li  HelpText<"Load a pch file and use it instead of all code up to "
268*67e74705SXin Li           "and including <filename>">,
269*67e74705SXin Li  MetaVarName<"<filename>">;
270*67e74705SXin Lidef _SLASH_Y_ : CLFlag<"Y-">,
271*67e74705SXin Li  HelpText<"Disable precompiled headers, overrides /Yc and /Yu">;
272*67e74705SXin Lidef _SLASH_Fp : CLJoined<"Fp">,
273*67e74705SXin Li  HelpText<"Set pch filename (with /Yc and /Yu)">, MetaVarName<"<filename>">;
274*67e74705SXin Li
275*67e74705SXin Lidef _SLASH_Gd : CLFlag<"Gd">,
276*67e74705SXin Li  HelpText<"Set __cdecl as a default calling convention">;
277*67e74705SXin Lidef _SLASH_Gr : CLFlag<"Gr">,
278*67e74705SXin Li  HelpText<"Set __fastcall as a default calling convention">;
279*67e74705SXin Lidef _SLASH_Gz : CLFlag<"Gz">,
280*67e74705SXin Li  HelpText<"Set __stdcall as a default calling convention">;
281*67e74705SXin Lidef _SLASH_Gv : CLFlag<"Gv">,
282*67e74705SXin Li  HelpText<"Set __vectorcall as a default calling convention">;
283*67e74705SXin Li
284*67e74705SXin Li// Ignored:
285*67e74705SXin Li
286*67e74705SXin Lidef _SLASH_analyze_ : CLIgnoredFlag<"analyze-">;
287*67e74705SXin Lidef _SLASH_bigobj : CLIgnoredFlag<"bigobj">;
288*67e74705SXin Lidef _SLASH_cgthreads : CLIgnoredJoined<"cgthreads">;
289*67e74705SXin Lidef _SLASH_d2FastFail : CLIgnoredFlag<"d2FastFail">;
290*67e74705SXin Lidef _SLASH_d2Zi_PLUS : CLIgnoredFlag<"d2Zi+">;
291*67e74705SXin Lidef _SLASH_errorReport : CLIgnoredJoined<"errorReport">;
292*67e74705SXin Lidef _SLASH_Fd : CLIgnoredJoined<"Fd">;
293*67e74705SXin Lidef _SLASH_FC : CLIgnoredFlag<"FC">;
294*67e74705SXin Lidef _SLASH_FS : CLIgnoredFlag<"FS">, HelpText<"Force synchronous PDB writes">;
295*67e74705SXin Lidef _SLASH_GF : CLIgnoredFlag<"GF">;
296*67e74705SXin Lidef _SLASH_kernel_ : CLIgnoredFlag<"kernel-">;
297*67e74705SXin Lidef _SLASH_nologo : CLIgnoredFlag<"nologo">;
298*67e74705SXin Lidef _SLASH_Og : CLIgnoredFlag<"Og">;
299*67e74705SXin Lidef _SLASH_openmp_ : CLIgnoredFlag<"openmp-">;
300*67e74705SXin Lidef _SLASH_RTC : CLIgnoredJoined<"RTC">;
301*67e74705SXin Lidef _SLASH_sdl : CLIgnoredFlag<"sdl">;
302*67e74705SXin Lidef _SLASH_sdl_ : CLIgnoredFlag<"sdl-">;
303*67e74705SXin Lidef _SLASH_w : CLIgnoredJoined<"w">;
304*67e74705SXin Lidef _SLASH_Zc_auto : CLIgnoredFlag<"Zc:auto">;
305*67e74705SXin Lidef _SLASH_Zc_forScope : CLIgnoredFlag<"Zc:forScope">;
306*67e74705SXin Lidef _SLASH_Zc_inline : CLIgnoredFlag<"Zc:inline">;
307*67e74705SXin Lidef _SLASH_Zc_rvalueCast : CLIgnoredFlag<"Zc:rvalueCast">;
308*67e74705SXin Lidef _SLASH_Zc_wchar_t : CLIgnoredFlag<"Zc:wchar_t">;
309*67e74705SXin Lidef _SLASH_Zm : CLIgnoredJoined<"Zm">;
310*67e74705SXin Lidef _SLASH_Zo : CLIgnoredFlag<"Zo">;
311*67e74705SXin Lidef _SLASH_Zo_ : CLIgnoredFlag<"Zo-">;
312*67e74705SXin Li
313*67e74705SXin Li
314*67e74705SXin Li// Unsupported:
315*67e74705SXin Li
316*67e74705SXin Lidef _SLASH_AI : CLJoined<"AI">;
317*67e74705SXin Lidef _SLASH_clr : CLJoined<"clr">;
318*67e74705SXin Lidef _SLASH_doc : CLJoined<"doc">;
319*67e74705SXin Lidef _SLASH_FA_joined : CLJoined<"FA">;
320*67e74705SXin Lidef _SLASH_favor : CLJoined<"favor">;
321*67e74705SXin Lidef _SLASH_F : CLFlag<"F">;
322*67e74705SXin Lidef _SLASH_Fm : CLJoined<"Fm">;
323*67e74705SXin Lidef _SLASH_Fr : CLJoined<"Fr">;
324*67e74705SXin Lidef _SLASH_FR : CLJoined<"FR">;
325*67e74705SXin Lidef _SLASH_FU : CLJoinedOrSeparate<"FU">;
326*67e74705SXin Lidef _SLASH_Fx : CLFlag<"Fx">;
327*67e74705SXin Lidef _SLASH_G1 : CLFlag<"G1">;
328*67e74705SXin Lidef _SLASH_G2 : CLFlag<"G2">;
329*67e74705SXin Lidef _SLASH_Ge : CLFlag<"Ge">;
330*67e74705SXin Lidef _SLASH_Gh : CLFlag<"Gh">;
331*67e74705SXin Lidef _SLASH_GH : CLFlag<"GH">;
332*67e74705SXin Lidef _SLASH_GL : CLFlag<"GL">;
333*67e74705SXin Lidef _SLASH_GL_ : CLFlag<"GL-">;
334*67e74705SXin Lidef _SLASH_Gm : CLFlag<"Gm">;
335*67e74705SXin Lidef _SLASH_Gm_ : CLFlag<"Gm-">;
336*67e74705SXin Lidef _SLASH_GT : CLFlag<"GT">;
337*67e74705SXin Lidef _SLASH_Guard : CLJoined<"guard:">;
338*67e74705SXin Lidef _SLASH_GZ : CLFlag<"GZ">;
339*67e74705SXin Lidef _SLASH_H : CLFlag<"H">;
340*67e74705SXin Lidef _SLASH_homeparams : CLFlag<"homeparams">;
341*67e74705SXin Lidef _SLASH_hotpatch : CLFlag<"hotpatch">;
342*67e74705SXin Lidef _SLASH_kernel : CLFlag<"kernel">;
343*67e74705SXin Lidef _SLASH_LN : CLFlag<"LN">;
344*67e74705SXin Lidef _SLASH_MP : CLJoined<"MP">;
345*67e74705SXin Lidef _SLASH_openmp : CLFlag<"openmp">;
346*67e74705SXin Lidef _SLASH_Qfast_transcendentals : CLFlag<"Qfast_transcendentals">;
347*67e74705SXin Lidef _SLASH_QIfist : CLFlag<"QIfist">;
348*67e74705SXin Lidef _SLASH_Qimprecise_fwaits : CLFlag<"Qimprecise_fwaits">;
349*67e74705SXin Lidef _SLASH_Qpar : CLFlag<"Qpar">;
350*67e74705SXin Lidef _SLASH_Qvec_report : CLJoined<"Qvec-report">;
351*67e74705SXin Lidef _SLASH_u : CLFlag<"u">;
352*67e74705SXin Lidef _SLASH_V : CLFlag<"V">;
353*67e74705SXin Lidef _SLASH_WL : CLFlag<"WL">;
354*67e74705SXin Lidef _SLASH_Wp64 : CLFlag<"Wp64">;
355*67e74705SXin Lidef _SLASH_X : CLFlag<"X">;
356*67e74705SXin Lidef _SLASH_Yd : CLFlag<"Yd">;
357*67e74705SXin Lidef _SLASH_Yl : CLJoined<"Yl">;
358*67e74705SXin Lidef _SLASH_Za : CLFlag<"Za">;
359*67e74705SXin Lidef _SLASH_Zc : CLJoined<"Zc:">;
360*67e74705SXin Lidef _SLASH_Ze : CLFlag<"Ze">;
361*67e74705SXin Lidef _SLASH_Zg : CLFlag<"Zg">;
362*67e74705SXin Lidef _SLASH_ZI : CLFlag<"ZI">;
363*67e74705SXin Lidef _SLASH_ZW : CLJoined<"ZW">;
364