================ @@ -9619,6 +9620,65 @@ ObjCInterfaceDecl *ASTContext::getObjCProtocolDecl() const { return ObjCProtocolClassDecl; } +std::optional<PointerAuthQualifier> +ASTContext::getExplicitOrImplicitPointerAuth(QualType T) { + auto ExplicitQualifier = T.getPointerAuth(); + if (ExplicitQualifier.isPresent()) + return ExplicitQualifier; + if (T->isDependentType()) { + return std::nullopt; + } + // FIXME: The more we expand pointer auth support, the more it becomes clear + // the codegen option's PointerAuth info belongs in LangOpts + if (!LangOpts.PointerAuthCalls) + return PointerAuthQualifier(); + if (T->isFunctionPointerType() || T->isFunctionReferenceType()) + T = T->getPointeeType(); + if (!T->isFunctionType()) + return PointerAuthQualifier(); + int ExtraDiscriminator = 0; + if (LangOpts.PointerAuthFunctionTypeDiscrimination) { + ExtraDiscriminator = getPointerAuthTypeDiscriminator(T); + } + return PointerAuthQualifier::Create( + LangOpts.PointerAuthFunctionKey, false, ExtraDiscriminator, ---------------- ojhunt wrote:
Yup (another "I wonder if we can make clang-tidy complain") https://github.com/llvm/llvm-project/pull/138482 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits