3232#include " llvm/ADT/StringRef.h"
3333#include " llvm/ADT/StringSet.h"
3434#include " llvm/Frontend/OpenMP/OMPGridValues.h"
35- #include " llvm/IR/Attributes.h"
3635#include " llvm/IR/DerivedTypes.h"
37- #include " llvm/IR/Function.h"
3836#include " llvm/Support/DataTypes.h"
3937#include " llvm/Support/Error.h"
4038#include " llvm/Support/VersionTuple.h"
@@ -1402,15 +1400,15 @@ class TargetInfo : public TransferrableTargetInfo,
14021400 return true ;
14031401 }
14041402
1405- class BranchProtectionInfo {
1406- public:
1403+ struct BranchProtectionInfo {
14071404 LangOptions::SignReturnAddressScopeKind SignReturnAddr;
14081405 LangOptions::SignReturnAddressKeyKind SignKey;
14091406 bool BranchTargetEnforcement;
14101407 bool BranchProtectionPAuthLR;
14111408 bool GuardedControlStack;
14121409
1413- protected:
1410+ BranchProtectionInfo () = default ;
1411+
14141412 const char *getSignReturnAddrStr () const {
14151413 switch (SignReturnAddr) {
14161414 case LangOptions::SignReturnAddressScopeKind::None:
@@ -1432,42 +1430,6 @@ class TargetInfo : public TransferrableTargetInfo,
14321430 }
14331431 llvm_unreachable (" Unexpected SignReturnAddressKeyKind" );
14341432 }
1435-
1436- public:
1437- BranchProtectionInfo () = default ;
1438- BranchProtectionInfo (const LangOptions &LangOpts) {
1439- SignReturnAddr =
1440- LangOpts.hasSignReturnAddress ()
1441- ? (LangOpts.isSignReturnAddressScopeAll ()
1442- ? LangOptions::SignReturnAddressScopeKind::All
1443- : LangOptions::SignReturnAddressScopeKind::NonLeaf)
1444- : LangOptions::SignReturnAddressScopeKind::None;
1445- SignKey = LangOpts.isSignReturnAddressWithAKey ()
1446- ? LangOptions::SignReturnAddressKeyKind::AKey
1447- : LangOptions::SignReturnAddressKeyKind::BKey;
1448- BranchTargetEnforcement = LangOpts.BranchTargetEnforcement ;
1449- BranchProtectionPAuthLR = LangOpts.BranchProtectionPAuthLR ;
1450- GuardedControlStack = LangOpts.GuardedControlStack ;
1451- }
1452-
1453- void setFnAttributes (llvm::Function &F) {
1454- llvm::AttrBuilder FuncAttrs (F.getContext ());
1455- setFnAttributes (FuncAttrs);
1456- F.addFnAttrs (FuncAttrs);
1457- }
1458-
1459- void setFnAttributes (llvm::AttrBuilder &FuncAttrs) {
1460- if (SignReturnAddr != LangOptions::SignReturnAddressScopeKind::None) {
1461- FuncAttrs.addAttribute (" sign-return-address" , getSignReturnAddrStr ());
1462- FuncAttrs.addAttribute (" sign-return-address-key" , getSignKeyStr ());
1463- }
1464- if (BranchTargetEnforcement)
1465- FuncAttrs.addAttribute (" branch-target-enforcement" );
1466- if (BranchProtectionPAuthLR)
1467- FuncAttrs.addAttribute (" branch-protection-pauth-lr" );
1468- if (GuardedControlStack)
1469- FuncAttrs.addAttribute (" guarded-control-stack" );
1470- }
14711433 };
14721434
14731435 // / Determine if the Architecture in this TargetInfo supports branch
0 commit comments