Skip to content

Commit ddd287d

Browse files
MaskRaylamb-j
authored andcommitted
[Driver] Add BoolMOption to simplify boolean -m* options
Similar to BoolFOption/BoolGOption for -f* and -g* Change-Id: I26d63ff984b6f83f3407fe175728730a6b63b9a8
1 parent 83d1609 commit ddd287d

File tree

1 file changed

+18
-13
lines changed

1 file changed

+18
-13
lines changed

clang/include/clang/Driver/Options.td

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -523,6 +523,13 @@ multiclass BoolGOption<string flag_base, KeyPathAndMacro kpm,
523523
Group<g_Group>;
524524
}
525525

526+
multiclass BoolMOption<string flag_base, KeyPathAndMacro kpm,
527+
Default default, FlagDef flag1, FlagDef flag2,
528+
BothFlags both = BothFlags<[]>> {
529+
defm NAME : BoolOption<"m", flag_base, kpm, default, flag1, flag2, both>,
530+
Group<m_Group>;
531+
}
532+
526533
// Works like BoolOption except without marshalling
527534
multiclass BoolOptionWithoutMarshalling<string prefix = "", string spelling_base,
528535
FlagDef flag1_base, FlagDef flag2_base,
@@ -4630,11 +4637,10 @@ def mretpoline : Flag<["-"], "mretpoline">, Group<m_Group>,
46304637
Visibility<[ClangOption, CLOption]>;
46314638
def mno_retpoline : Flag<["-"], "mno-retpoline">, Group<m_Group>,
46324639
Visibility<[ClangOption, CLOption]>;
4633-
defm speculative_load_hardening : BoolOption<"m", "speculative-load-hardening",
4640+
defm speculative_load_hardening : BoolMOption<"speculative-load-hardening",
46344641
CodeGenOpts<"SpeculativeLoadHardening">, DefaultFalse,
46354642
PosFlag<SetTrue, [], [ClangOption, CC1Option]>,
4636-
NegFlag<SetFalse>, BothFlags<[], [ClangOption, CLOption]>>,
4637-
Group<m_Group>;
4643+
NegFlag<SetFalse>, BothFlags<[], [ClangOption, CLOption]>>;
46384644
def mlvi_hardening : Flag<["-"], "mlvi-hardening">, Group<m_Group>,
46394645
Visibility<[ClangOption, CLOption]>,
46404646
HelpText<"Enable all mitigations for Load Value Injection (LVI)">;
@@ -4839,13 +4845,13 @@ def mexec_model_EQ : Joined<["-"], "mexec-model=">, Group<m_wasm_Features_Driver
48394845
"explicitly terminated.">;
48404846
} // let Flags = [TargetSpecific]
48414847

4842-
defm amdgpu_ieee : BoolOption<"m", "amdgpu-ieee",
4848+
defm amdgpu_ieee : BoolMOption<"amdgpu-ieee",
48434849
CodeGenOpts<"EmitIEEENaNCompliantInsts">, DefaultTrue,
48444850
PosFlag<SetTrue, [], [ClangOption], "Sets the IEEE bit in the expected default floating point "
48454851
" mode register. Floating point opcodes that support exception flag "
48464852
"gathering quiet and propagate signaling NaN inputs per IEEE 754-2008. "
48474853
"This option changes the ABI. (AMDGPU only)">,
4848-
NegFlag<SetFalse, [], [ClangOption, CC1Option]>>, Group<m_Group>;
4854+
NegFlag<SetFalse, [], [ClangOption, CC1Option]>>;
48494855

48504856
def mcode_object_version_EQ : Joined<["-"], "mcode-object-version=">, Group<m_Group>,
48514857
HelpText<"Specify code object ABI version. Defaults to 4. (AMDGPU only)">,
@@ -4869,14 +4875,14 @@ defm amdgpu_precise_memory_op
48694875
: SimpleMFlag<"amdgpu-precise-memory-op", "Enable", "Disable",
48704876
" precise memory mode (AMDGPU only)">;
48714877

4872-
defm unsafe_fp_atomics : BoolOption<"m", "unsafe-fp-atomics",
4878+
defm unsafe_fp_atomics : BoolMOption<"unsafe-fp-atomics",
48734879
TargetOpts<"AllowAMDGPUUnsafeFPAtomics">, DefaultFalse,
48744880
PosFlag<SetTrue, [], [ClangOption, CC1Option],
48754881
"Enable generation of unsafe floating point "
48764882
"atomic instructions. May generate more efficient code, but may not "
48774883
"respect rounding and denormal modes, and may give incorrect results "
48784884
"for certain memory destinations. (AMDGPU only)">,
4879-
NegFlag<SetFalse>>, Group<m_Group>;
4885+
NegFlag<SetFalse>>;
48804886

48814887
// TODO: Remove during upstreaming target id.
48824888
def mxnack : Flag<["-"], "mxnack">, Group<m_amdgpu_Features_Group>,
@@ -4969,11 +4975,10 @@ def mrop_protect : Flag<["-"], "mrop-protect">,
49694975
def mprivileged : Flag<["-"], "mprivileged">,
49704976
Group<m_ppc_Features_Group>;
49714977

4972-
defm regnames : BoolOption<"m", "regnames",
4978+
defm regnames : BoolMOption<"regnames",
49734979
CodeGenOpts<"PPCUseFullRegisterNames">, DefaultFalse,
49744980
PosFlag<SetTrue, [], [ClangOption, CC1Option], "Use full register names when writing assembly output">,
4975-
NegFlag<SetFalse, [], [ClangOption], "Use only register numbers when writing assembly output">>,
4976-
Group<m_Group>;
4981+
NegFlag<SetFalse, [], [ClangOption], "Use only register numbers when writing assembly output">>;
49774982
} // let Flags = [TargetSpecific]
49784983
def maix_small_local_exec_tls : Flag<["-"], "maix-small-local-exec-tls">,
49794984
Group<m_ppc_Features_Group>,
@@ -5015,10 +5020,10 @@ def mxcoff_build_id_EQ : Joined<["-"], "mxcoff-build-id=">, Group<Link_Group>, M
50155020
def mignore_xcoff_visibility : Flag<["-"], "mignore-xcoff-visibility">, Group<m_Group>,
50165021
HelpText<"Not emit the visibility attribute for asm in AIX OS or give all symbols 'unspecified' visibility in XCOFF object file">,
50175022
Flags<[TargetSpecific]>, Visibility<[ClangOption, CC1Option]>;
5018-
defm backchain : BoolOption<"m", "backchain",
5023+
defm backchain : BoolMOption<"backchain",
50195024
CodeGenOpts<"Backchain">, DefaultFalse,
50205025
PosFlag<SetTrue, [], [ClangOption], "Link stack frames through backchain on System Z">,
5021-
NegFlag<SetFalse>, BothFlags<[], [ClangOption, CC1Option]>>, Group<m_Group>;
5026+
NegFlag<SetFalse>, BothFlags<[], [ClangOption, CC1Option]>>;
50225027

50235028
def mno_warn_nonportable_cfstrings : Flag<["-"], "mno-warn-nonportable-cfstrings">, Group<m_Group>;
50245029
def mno_omit_leaf_frame_pointer : Flag<["-"], "mno-omit-leaf-frame-pointer">, Group<m_Group>;
@@ -6989,7 +6994,7 @@ def msmall_data_limit : Separate<["-"], "msmall-data-limit">,
69896994
def funwind_tables_EQ : Joined<["-"], "funwind-tables=">,
69906995
HelpText<"Generate unwinding tables for all functions">,
69916996
MarshallingInfoInt<CodeGenOpts<"UnwindTables">>;
6992-
defm constructor_aliases : BoolOption<"m", "constructor-aliases",
6997+
defm constructor_aliases : BoolMOption<"constructor-aliases",
69936998
CodeGenOpts<"CXXCtorDtorAliases">, DefaultFalse,
69946999
PosFlag<SetTrue, [], [ClangOption], "Enable">,
69957000
NegFlag<SetFalse, [], [ClangOption], "Disable">,

0 commit comments

Comments
 (0)