================ @@ -2110,6 +2110,21 @@ llvm::InlineResult llvm::InlineFunction(CallBase &CB, InlineFunctionInfo &IFI, return InlineResult::failure("incompatible strictfp attributes"); } + // Do not inline function with a different signing scheme. + if (CalledFunc->getFnAttribute("sign-return-address") != + Caller->getFnAttribute("sign-return-address")) { + return InlineResult::failure("incompatible sign return address attributes"); + } + if (CalledFunc->getFnAttribute("sign-return-address-key") != + Caller->getFnAttribute("sign-return-address-key")) { + return InlineResult::failure("incompatible signing keys attributes"); + } + if (CalledFunc->getFnAttribute("branch-protection-pauth-lr") != + Caller->getFnAttribute("branch-protection-pauth-lr")) { + return InlineResult::failure( + "incompatible sign return address modifier attributes"); + } + ---------------- nickdesaulniers wrote:
I don't think we should be adding more explicit checks like this. I think `CompatRule` in llvm/include/llvm/IR/Attributes.td should be used instead. The `StrictFP` check above could be converted to a `CompatRule` instead. Can you please give that a shot? These rules are checked earlier by `AttributeFuncs::areInlineCompatible` in InlineCost.cpp. https://github.com/llvm/llvm-project/pull/80642 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits