[llvm] [AArch64] Dont inline streaming fn into non-streaming caller (PR #150595)

Gaƫtan Bossu via llvm-commits llvm-commits at lists.llvm.org
Tue Jul 29 09:23:05 PDT 2025


================
@@ -270,6 +270,13 @@ bool AArch64TTIImpl::areInlineCompatible(const Function *Caller,
                                          const Function *Callee) const {
   SMECallAttrs CallAttrs(*Caller, *Callee);
 
+  // Never inline a function explicitly marked as being streaming,
+  // into a non-streaming function. Assume it was marked as streaming
+  // for a reason.
+  if (CallAttrs.caller().hasNonStreamingInterfaceAndBody() &&
+      CallAttrs.callee().hasStreamingInterfaceOrBody())
+    return false;
+
   // When inlining, we should consider the body of the function, not the
   // interface.
   if (CallAttrs.callee().hasStreamingBody()) {
----------------
gbossu wrote:

I see `CallAttrs` being modified in the lines below. Could those changes affect the early exit check you added above?

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


More information about the llvm-commits mailing list