================ @@ -116,37 +116,22 @@ class AArch64TargetCodeGenInfo : public TargetCodeGenInfo { if (!FD) return; - const auto *TA = FD->getAttr<TargetAttr>(); - if (TA == nullptr) - return; - - ParsedTargetAttr Attr = - CGM.getTarget().parseTargetAttr(TA->getFeaturesStr()); - if (Attr.BranchProtection.empty()) - return; - - TargetInfo::BranchProtectionInfo BPI; - StringRef Error; - (void)CGM.getTarget().validateBranchProtection(Attr.BranchProtection, - Attr.CPU, BPI, Error); - assert(Error.empty()); - - auto *Fn = cast<llvm::Function>(GV); - Fn->addFnAttr("sign-return-address", BPI.getSignReturnAddrStr()); - - if (BPI.SignReturnAddr != LangOptions::SignReturnAddressScopeKind::None) { - Fn->addFnAttr("sign-return-address-key", - BPI.SignKey == LangOptions::SignReturnAddressKeyKind::AKey - ? "a_key" - : "b_key"); + TargetInfo::BranchProtectionInfo BPI(CGM.getLangOpts()); + + if (const auto *TA = FD->getAttr<TargetAttr>()) { + ParsedTargetAttr Attr = + CGM.getTarget().parseTargetAttr(TA->getFeaturesStr()); + if (!Attr.BranchProtection.empty()) { + StringRef Error; + (void)CGM.getTarget().validateBranchProtection(Attr.BranchProtection, + Attr.CPU, BPI, Error); +#ifndef NDEBUG + assert(Error.empty()); +#endif ---------------- nickdesaulniers wrote:
No need for the preprocessor guard here, as `assert` only does anything if NDEBUG is not defined. [My earlier suggestion](https://github.com/llvm/llvm-project/pull/82819#discussion_r1508064741) was to put it around this if statement, but I think that's a bad suggestion now since we want validateBranchProtection to run regardless of NDEBUG. https://github.com/llvm/llvm-project/pull/82819 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits