@@ -1415,10 +1415,14 @@ class TargetInfo : public TransferrableTargetInfo,
14151415 switch (SignReturnAddr) {
14161416 case LangOptions::SignReturnAddressScopeKind::None:
14171417 return " none" ;
1418+ case LangOptions::SignReturnAddressScopeKind::NonLeaf:
14181419 return " non-leaf" ;
1420+ case LangOptions::SignReturnAddressScopeKind::All:
1421+ return " all" ;
14191422 }
14201423 llvm_unreachable (" Unexpected SignReturnAddressScopeKind" );
14211424 }
1425+
14221426 const char *getSignKeyStr () const {
14231427 switch (SignKey) {
14241428 case LangOptions::SignReturnAddressKeyKind::AKey:
@@ -1437,7 +1441,10 @@ class TargetInfo : public TransferrableTargetInfo,
14371441 ? (LangOpts.isSignReturnAddressScopeAll ()
14381442 ? LangOptions::SignReturnAddressScopeKind::All
14391443 : LangOptions::SignReturnAddressScopeKind::NonLeaf)
1444+ : LangOptions::SignReturnAddressScopeKind::None;
14401445 SignKey = LangOpts.isSignReturnAddressWithAKey ()
1446+ ? LangOptions::SignReturnAddressKeyKind::AKey
1447+ : LangOptions::SignReturnAddressKeyKind::BKey;
14411448 BranchTargetEnforcement = LangOpts.BranchTargetEnforcement ;
14421449 BranchProtectionPAuthLR = LangOpts.BranchProtectionPAuthLR ;
14431450 GuardedControlStack = LangOpts.GuardedControlStack ;
@@ -1461,11 +1468,19 @@ class TargetInfo : public TransferrableTargetInfo,
14611468 if (GuardedControlStack)
14621469 FuncAttrs.addAttribute (" guarded-control-stack" );
14631470 }
1471+ };
14641472
14651473 // / Determine if the Architecture in this TargetInfo supports branch
14661474 // / protection
14671475 virtual bool isBranchProtectionSupportedArch (StringRef Arch) const {
14681476 return false ;
1477+ }
1478+
1479+ // / Determine if this TargetInfo supports the given branch protection
1480+ // / specification
1481+ virtual bool validateBranchProtection (StringRef Spec, StringRef Arch,
1482+ BranchProtectionInfo &BPI,
1483+ StringRef &Err) const {
14691484 Err = " " ;
14701485 return false ;
14711486 }
0 commit comments