================
@@ -9800,3 +9817,45 @@ SDValue
SystemZTargetLowering::lowerVECREDUCE_ADD(SDValue Op,
ISD::EXTRACT_VECTOR_ELT, DL, VT, DAG.getBitcast(OpVT, Op),
DAG.getConstant(OpVT.getVectorNumElements() - 1, DL, MVT::i32));
}
+
+// Only consider a function fully internal as long as it has local linkage
+// and is not used in any other way than acting as the called function at
+// call sites. TODO: Remove this when/if all internal functions adhere to
+// the ABI.
+bool SystemZTargetLowering::isFullyInternal(const Function *Fn) const {
+ if (!Fn->hasLocalLinkage())
+ return false;
+ for (const User *U : Fn->users()) {
+ if (auto *CB = dyn_cast<CallBase>(U)) {
+ if (CB->getCalledFunction() != Fn)
+ return false;
+ } else
+ return false;
+ }
+ return true;
+}
+
+// Verify that narrow integer arguments are extended as required by the ABI.
+void SystemZTargetLowering::
+verifyNarrowIntegerArgs(const SmallVectorImpl<ISD::OutputArg> &Outs,
+ bool IsInternal) const {
+ if (IsInternal || !Subtarget.isTargetELF())
+ return;
+
+ // Temporarily only do the check when explicitly requested.
+ if (/* !getTargetMachine().Options.VerifyArgABICompliance && */
----------------
JonPsson1 wrote:
ok - using getNumCoccurrences() seems more clear, thanks. Hoping that it's ok
to leave that logic in there with VerifyArgABICompliance by using a special
extra temporary check against the CL option.
https://github.com/llvm/llvm-project/pull/100757
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits