32
32
#include " llvm/ADT/StringRef.h"
33
33
#include " llvm/ADT/StringSet.h"
34
34
#include " llvm/Frontend/OpenMP/OMPGridValues.h"
35
- #include " llvm/IR/Attributes.h"
36
35
#include " llvm/IR/DerivedTypes.h"
37
- #include " llvm/IR/Function.h"
38
36
#include " llvm/Support/DataTypes.h"
39
37
#include " llvm/Support/Error.h"
40
38
#include " llvm/Support/VersionTuple.h"
@@ -1402,15 +1400,15 @@ class TargetInfo : public TransferrableTargetInfo,
1402
1400
return true ;
1403
1401
}
1404
1402
1405
- class BranchProtectionInfo {
1406
- public:
1403
+ struct BranchProtectionInfo {
1407
1404
LangOptions::SignReturnAddressScopeKind SignReturnAddr;
1408
1405
LangOptions::SignReturnAddressKeyKind SignKey;
1409
1406
bool BranchTargetEnforcement;
1410
1407
bool BranchProtectionPAuthLR;
1411
1408
bool GuardedControlStack;
1412
1409
1413
- protected:
1410
+ BranchProtectionInfo () = default ;
1411
+
1414
1412
const char *getSignReturnAddrStr () const {
1415
1413
switch (SignReturnAddr) {
1416
1414
case LangOptions::SignReturnAddressScopeKind::None:
@@ -1432,42 +1430,6 @@ class TargetInfo : public TransferrableTargetInfo,
1432
1430
}
1433
1431
llvm_unreachable (" Unexpected SignReturnAddressKeyKind" );
1434
1432
}
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
- }
1471
1433
};
1472
1434
1473
1435
// / Determine if the Architecture in this TargetInfo supports branch
0 commit comments