@@ -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);
@@ -3466,6 +3468,8 @@ static void GeneratePointerAuthArgs(const LangOptions &Opts,
34663468 GenerateArg (Consumer, OPT_fptrauth_init_fini);
34673469 if (Opts.PointerAuthInitFiniAddressDiscrimination )
34683470 GenerateArg (Consumer, OPT_fptrauth_init_fini_address_discrimination);
3471+ if (Opts.AArch64JumpTableHardening )
3472+ GenerateArg (Consumer, OPT_faarch64_jump_table_hardening);
34693473}
34703474
34713475static void ParsePointerAuthArgs (LangOptions &Opts, ArgList &Args,
@@ -3486,6 +3490,8 @@ static void ParsePointerAuthArgs(LangOptions &Opts, ArgList &Args,
34863490 Opts.PointerAuthInitFini = Args.hasArg (OPT_fptrauth_init_fini);
34873491 Opts.PointerAuthInitFiniAddressDiscrimination =
34883492 Args.hasArg (OPT_fptrauth_init_fini_address_discrimination);
3493+ Opts.AArch64JumpTableHardening =
3494+ Args.hasArg (OPT_faarch64_jump_table_hardening);
34893495}
34903496
34913497// / Check if input file kind and language standard are compatible.
0 commit comments