[clang] [Clang][SME] Detect always_inline used with mismatched streaming attributes (PR #77936)
Sam Tebbs via cfe-commits
cfe-commits at lists.llvm.org
Mon Jan 15 02:26:44 PST 2024
================
@@ -812,6 +819,23 @@ Address AArch64ABIInfo::EmitMSVAArg(CodeGenFunction &CGF, Address VAListAddr,
/*allowHigherAlign*/ false);
}
+void AArch64TargetCodeGenInfo::checkFunctionCallABI(
+ CodeGenModule &CGM, SourceLocation CallLoc, const FunctionDecl *Caller,
+ const FunctionDecl *Callee, const CallArgList &Args) const {
+ if (!Callee->hasAttr<AlwaysInlineAttr>())
+ return;
+
+ auto CalleeIsStreaming =
+ Sema::getArmStreamingFnType(Callee) == Sema::ArmStreaming;
+ auto CallerIsStreaming =
+ Sema::getArmStreamingFnType(Caller) == Sema::ArmStreaming;
+
+ if (CalleeIsStreaming && !CallerIsStreaming)
----------------
SamTebbs33 wrote:
That makes sense, thank you. I also realised that it'll need to check if the caller is streaming_compatible but the callee isn't, so I'll add that too.
https://github.com/llvm/llvm-project/pull/77936
More information about the cfe-commits
mailing list