@@ -1511,14 +1511,16 @@ void CompilerInvocation::setDefaultPointerAuthOptions(
15111511 Opts.ReturnAddresses = LangOpts.PointerAuthReturns ;
15121512 Opts.AuthTraps = LangOpts.PointerAuthAuthTraps ;
15131513 Opts.IndirectGotos = LangOpts.PointerAuthIndirectGotos ;
1514+ Opts.AArch64JumpTableHardening = LangOpts.AArch64JumpTableHardening ;
15141515}
15151516
15161517static void parsePointerAuthOptions (PointerAuthOptions &Opts,
15171518 const LangOptions &LangOpts,
15181519 const llvm::Triple &Triple,
15191520 DiagnosticsEngine &Diags) {
15201521 if (!LangOpts.PointerAuthCalls && !LangOpts.PointerAuthReturns &&
1521- !LangOpts.PointerAuthAuthTraps && !LangOpts.PointerAuthIndirectGotos )
1522+ !LangOpts.PointerAuthAuthTraps && !LangOpts.PointerAuthIndirectGotos &&
1523+ !LangOpts.AArch64JumpTableHardening )
15221524 return ;
15231525
15241526 CompilerInvocation::setDefaultPointerAuthOptions (Opts, LangOpts, Triple);
@@ -3454,6 +3456,8 @@ static void GeneratePointerAuthArgs(const LangOptions &Opts,
34543456 GenerateArg (Consumer, OPT_fptrauth_init_fini_address_discrimination);
34553457 if (Opts.PointerAuthELFGOT )
34563458 GenerateArg (Consumer, OPT_fptrauth_elf_got);
3459+ if (Opts.AArch64JumpTableHardening )
3460+ GenerateArg (Consumer, OPT_faarch64_jump_table_hardening);
34573461}
34583462
34593463static void ParsePointerAuthArgs (LangOptions &Opts, ArgList &Args,
@@ -3475,6 +3479,8 @@ static void ParsePointerAuthArgs(LangOptions &Opts, ArgList &Args,
34753479 Opts.PointerAuthInitFiniAddressDiscrimination =
34763480 Args.hasArg (OPT_fptrauth_init_fini_address_discrimination);
34773481 Opts.PointerAuthELFGOT = Args.hasArg (OPT_fptrauth_elf_got);
3482+ Opts.AArch64JumpTableHardening =
3483+ Args.hasArg (OPT_faarch64_jump_table_hardening);
34783484}
34793485
34803486// / Check if input file kind and language standard are compatible.
0 commit comments