[clang] [Clang][SME] Detect always_inline used with mismatched streaming attributes (PR #77936)

Jon Roelofs via cfe-commits cfe-commits at lists.llvm.org
Fri Jan 12 10:06:45 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)
----------------
jroelofs wrote:

What about mismatching the other way?
```suggestion
  if (CalleeIsStreaming != CallerIsStreaming)
```


https://github.com/llvm/llvm-project/pull/77936


More information about the cfe-commits mailing list