Skip to content

Commit 379e68a

Browse files
committed
[clang][SLH] Add __has_feature(speculative_load_hardening)
SLH doesn't support asm goto and is unlikely to ever support it. Users of asm goto need a way to choose whether to use asm goto or fallback to an SLH compatible code path when SLH is enabled. This feature flag will give users this ability. Tested via unit test Reviewed By: mattdr Differential Revision: https://reviews.llvm.org/D79733
1 parent 5f05c2f commit 379e68a

File tree

4 files changed

+6
-2
lines changed

4 files changed

+6
-2
lines changed

clang/include/clang/Basic/Features.def

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
#define EXTENSION(Name, Predicate)
3737
#endif
3838

39+
FEATURE(speculative_load_hardening, LangOpts.SpeculativeLoadHardening)
3940
FEATURE(address_sanitizer,
4041
LangOpts.Sanitize.hasOneOf(SanitizerKind::Address |
4142
SanitizerKind::KernelAddress))

clang/include/clang/Basic/LangOptions.def

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -368,6 +368,8 @@ ENUM_LANGOPT(SignReturnAddressKey, SignReturnAddressKeyKind, 1, SignReturnAddres
368368
"Key used for return address signing")
369369
LANGOPT(BranchTargetEnforcement, 1, 0, "Branch-target enforcement enabled")
370370

371+
LANGOPT(SpeculativeLoadHardening, 1, 0, "Speculative load hardening enabled")
372+
371373
#undef LANGOPT
372374
#undef COMPATIBLE_LANGOPT
373375
#undef BENIGN_LANGOPT

clang/lib/Driver/ToolChains/Clang.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5361,8 +5361,8 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
53615361

53625362
Args.AddLastArg(CmdArgs, options::OPT_pthread);
53635363

5364-
if (Args.hasFlag(options::OPT_mspeculative_load_hardening, options::OPT_mno_speculative_load_hardening,
5365-
false))
5364+
if (Args.hasFlag(options::OPT_mspeculative_load_hardening,
5365+
options::OPT_mno_speculative_load_hardening, false))
53665366
CmdArgs.push_back(Args.MakeArgString("-mspeculative-load-hardening"));
53675367

53685368
RenderSSPOptions(TC, Args, CmdArgs, KernelOrKext);

clang/lib/Frontend/CompilerInvocation.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3382,6 +3382,7 @@ static void ParseLangArgs(LangOptions &Opts, ArgList &Args, InputKind IK,
33823382
}
33833383

33843384
Opts.BranchTargetEnforcement = Args.hasArg(OPT_mbranch_target_enforce);
3385+
Opts.SpeculativeLoadHardening = Args.hasArg(OPT_mspeculative_load_hardening);
33853386
}
33863387

33873388
static bool isStrictlyPreprocessorAction(frontend::ActionKind Action) {

0 commit comments

Comments
 (0)