================
@@ -743,6 +743,20 @@ bool Sema::checkMustTailAttr(const Stmt *St, const Attr
&MTA) {
CallerType.Func = CallerDecl->getType()->getAs<FunctionProtoType>();
}
+ if (Context.getTargetInfo().getTriple().isPPC()) {
+ if (Context.getTargetInfo().getTriple().isOSAIX())
+ return Diag(St->getBeginLoc(), diag::err_aix_musttail_unsupported);
+ else if (!Context.getTargetInfo().hasFeature("pcrelative-memops")) {
+ if (Context.getTargetInfo().hasFeature("longcall"))
+ return Diag(St->getBeginLoc(), diag::err_ppc_impossible_musttail) << 0;
+ else if (!CE->getDirectCallee())
+ return Diag(St->getBeginLoc(), diag::err_ppc_impossible_musttail) << 1;
+ else if (isa_and_nonnull<FunctionDecl>(CE->getCalleeDecl()) &&
----------------
chenzheng1030 wrote:
`2.c` can be detected by checking the callee definition is weak.
https://github.com/llvm/llvm-project/pull/93267
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits