llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-clang Author: Congcong Cai (HerrCai0907) <details> <summary>Changes</summary> --- Full diff: https://github.com/llvm/llvm-project/pull/109436.diff 7 Files Affected: - (added) clang/lib/Sema/AttrTemplateInstantiate.cpp (+6) - (added) clang/lib/Sema/AttrTemplateInstantiate.h (+19) - (modified) clang/lib/Sema/CMakeLists.txt (+1) - (modified) clang/lib/Sema/SemaDecl.cpp (+1-1) - (modified) clang/lib/Sema/SemaHLSL.cpp (+10-10) - (modified) clang/lib/Sema/SemaTemplateInstantiate.cpp (+1-11) - (modified) clang/lib/Sema/SemaTemplateInstantiateDecl.cpp (+1-3) ``````````diff diff --git a/clang/lib/Sema/AttrTemplateInstantiate.cpp b/clang/lib/Sema/AttrTemplateInstantiate.cpp new file mode 100644 index 00000000000000..e74d8003055930 --- /dev/null +++ b/clang/lib/Sema/AttrTemplateInstantiate.cpp @@ -0,0 +1,6 @@ +#include "AttrTemplateInstantiate.h" +#include "clang/AST/Attrs.inc" +#include "clang/Sema/EnterExpressionEvaluationContext.h" + +// Include attribute instantiation code. +#include "clang/Sema/AttrTemplateInstantiate.inc" diff --git a/clang/lib/Sema/AttrTemplateInstantiate.h b/clang/lib/Sema/AttrTemplateInstantiate.h new file mode 100644 index 00000000000000..2d43ec6deab880 --- /dev/null +++ b/clang/lib/Sema/AttrTemplateInstantiate.h @@ -0,0 +1,19 @@ + +#ifndef LLVM_CLANG_SEMA_ATTR_TEMPLATE_INSTANTIATE_H +#define LLVM_CLANG_SEMA_ATTR_TEMPLATE_INSTANTIATE_H + +#include "clang/AST/Attr.h" +#include "clang/Sema/Sema.h" +#include "clang/Sema/Template.h" + +// from AttrTemplateInstantiate.inc +namespace clang::sema { +Attr *instantiateTemplateAttribute( + const Attr *At, ASTContext &C, Sema &S, + const MultiLevelTemplateArgumentList &TemplateArgs); +Attr *instantiateTemplateAttributeForDecl( + const Attr *At, ASTContext &C, Sema &S, + const MultiLevelTemplateArgumentList &TemplateArgs); +} // namespace clang::sema + +#endif // LLVM_CLANG_SEMA_ATTR_TEMPLATE_INSTANTIATE_H diff --git a/clang/lib/Sema/CMakeLists.txt b/clang/lib/Sema/CMakeLists.txt index 2cee4f5ef6e99c..76c431ff069490 100644 --- a/clang/lib/Sema/CMakeLists.txt +++ b/clang/lib/Sema/CMakeLists.txt @@ -15,6 +15,7 @@ clang_tablegen(OpenCLBuiltins.inc -gen-clang-opencl-builtins add_clang_library(clangSema AnalysisBasedWarnings.cpp + AttrTemplateInstantiate.cpp CheckExprLifetime.cpp CodeCompleteConsumer.cpp DeclSpec.cpp diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp index 31bf50a32a83c3..77fe4e2894306c 100644 --- a/clang/lib/Sema/SemaDecl.cpp +++ b/clang/lib/Sema/SemaDecl.cpp @@ -7342,7 +7342,7 @@ static void copyAttrFromTypedefToDecl(Sema &S, Decl *D, const TypedefType *TT) { // This function emits warning and a corresponding note based on the // ReadOnlyPlacementAttr attribute. The warning checks that all global variable // declarations of an annotated type must be const qualified. -void emitReadOnlyPlacementAttrWarning(Sema &S, const VarDecl *VD) { +static void emitReadOnlyPlacementAttrWarning(Sema &S, const VarDecl *VD) { QualType VarType = VD->getType().getCanonicalType(); // Ignore local declarations (for now) and those with const qualification. diff --git a/clang/lib/Sema/SemaHLSL.cpp b/clang/lib/Sema/SemaHLSL.cpp index 03b7c2edb605fe..ebe76185cbb2d5 100644 --- a/clang/lib/Sema/SemaHLSL.cpp +++ b/clang/lib/Sema/SemaHLSL.cpp @@ -805,7 +805,7 @@ static CXXRecordDecl *getRecordDeclFromVarDecl(VarDecl *VD) { return TheRecordDecl; } -const HLSLAttributedResourceType * +static const HLSLAttributedResourceType * findAttributedResourceTypeOnField(VarDecl *VD) { assert(VD != nullptr && "expected VarDecl"); if (RecordDecl *RD = getRecordDeclFromVarDecl(VD)) { @@ -1417,7 +1417,7 @@ void SemaHLSL::DiagnoseAvailabilityViolations(TranslationUnitDecl *TU) { } // Helper function for CheckHLSLBuiltinFunctionCall -bool CheckVectorElementCallArgs(Sema *S, CallExpr *TheCall) { +static bool CheckVectorElementCallArgs(Sema *S, CallExpr *TheCall) { assert(TheCall->getNumArgs() > 1); ExprResult A = TheCall->getArg(0); @@ -1467,7 +1467,7 @@ bool CheckVectorElementCallArgs(Sema *S, CallExpr *TheCall) { return true; } -bool CheckArgsTypesAreCorrect( +static bool CheckArgsTypesAreCorrect( Sema *S, CallExpr *TheCall, QualType ExpectedType, llvm::function_ref<bool(clang::QualType PassedType)> Check) { for (unsigned i = 0; i < TheCall->getNumArgs(); ++i) { @@ -1485,7 +1485,7 @@ bool CheckArgsTypesAreCorrect( return false; } -bool CheckAllArgsHaveFloatRepresentation(Sema *S, CallExpr *TheCall) { +static bool CheckAllArgsHaveFloatRepresentation(Sema *S, CallExpr *TheCall) { auto checkAllFloatTypes = [](clang::QualType PassedType) -> bool { return !PassedType->hasFloatingRepresentation(); }; @@ -1493,7 +1493,7 @@ bool CheckAllArgsHaveFloatRepresentation(Sema *S, CallExpr *TheCall) { checkAllFloatTypes); } -bool CheckFloatOrHalfRepresentations(Sema *S, CallExpr *TheCall) { +static bool CheckFloatOrHalfRepresentations(Sema *S, CallExpr *TheCall) { auto checkFloatorHalf = [](clang::QualType PassedType) -> bool { clang::QualType BaseType = PassedType->isVectorType() @@ -1505,7 +1505,7 @@ bool CheckFloatOrHalfRepresentations(Sema *S, CallExpr *TheCall) { checkFloatorHalf); } -bool CheckNoDoubleVectors(Sema *S, CallExpr *TheCall) { +static bool CheckNoDoubleVectors(Sema *S, CallExpr *TheCall) { auto checkDoubleVector = [](clang::QualType PassedType) -> bool { if (const auto *VecTy = PassedType->getAs<VectorType>()) return VecTy->getElementType()->isDoubleType(); @@ -1514,7 +1514,7 @@ bool CheckNoDoubleVectors(Sema *S, CallExpr *TheCall) { return CheckArgsTypesAreCorrect(S, TheCall, S->Context.FloatTy, checkDoubleVector); } -bool CheckFloatingOrSignedIntRepresentation(Sema *S, CallExpr *TheCall) { +static bool CheckFloatingOrSignedIntRepresentation(Sema *S, CallExpr *TheCall) { auto checkAllSignedTypes = [](clang::QualType PassedType) -> bool { return !PassedType->hasSignedIntegerRepresentation() && !PassedType->hasFloatingRepresentation(); @@ -1523,7 +1523,7 @@ bool CheckFloatingOrSignedIntRepresentation(Sema *S, CallExpr *TheCall) { checkAllSignedTypes); } -bool CheckUnsignedIntRepresentation(Sema *S, CallExpr *TheCall) { +static bool CheckUnsignedIntRepresentation(Sema *S, CallExpr *TheCall) { auto checkAllUnsignedTypes = [](clang::QualType PassedType) -> bool { return !PassedType->hasUnsignedIntegerRepresentation(); }; @@ -1531,8 +1531,8 @@ bool CheckUnsignedIntRepresentation(Sema *S, CallExpr *TheCall) { checkAllUnsignedTypes); } -void SetElementTypeAsReturnType(Sema *S, CallExpr *TheCall, - QualType ReturnType) { +static void SetElementTypeAsReturnType(Sema *S, CallExpr *TheCall, + QualType ReturnType) { auto *VecTyA = TheCall->getArg(0)->getType()->getAs<VectorType>(); if (VecTyA) ReturnType = S->Context.getVectorType(ReturnType, VecTyA->getNumElements(), diff --git a/clang/lib/Sema/SemaTemplateInstantiate.cpp b/clang/lib/Sema/SemaTemplateInstantiate.cpp index 55f38743e2768e..bd1f2a411cf7b8 100644 --- a/clang/lib/Sema/SemaTemplateInstantiate.cpp +++ b/clang/lib/Sema/SemaTemplateInstantiate.cpp @@ -9,6 +9,7 @@ // //===----------------------------------------------------------------------===/ +#include "AttrTemplateInstantiate.h" #include "TreeTransform.h" #include "clang/AST/ASTConcept.h" #include "clang/AST/ASTConsumer.h" @@ -3421,17 +3422,6 @@ Sema::SubstBaseSpecifiers(CXXRecordDecl *Instantiation, return Invalid; } -// Defined via #include from SemaTemplateInstantiateDecl.cpp -namespace clang { - namespace sema { - Attr *instantiateTemplateAttribute(const Attr *At, ASTContext &C, Sema &S, - const MultiLevelTemplateArgumentList &TemplateArgs); - Attr *instantiateTemplateAttributeForDecl( - const Attr *At, ASTContext &C, Sema &S, - const MultiLevelTemplateArgumentList &TemplateArgs); - } -} - bool Sema::InstantiateClass(SourceLocation PointOfInstantiation, CXXRecordDecl *Instantiation, CXXRecordDecl *Pattern, diff --git a/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp b/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp index e055c87e783813..3e8d391e6fbfa1 100644 --- a/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp +++ b/clang/lib/Sema/SemaTemplateInstantiateDecl.cpp @@ -9,6 +9,7 @@ // //===----------------------------------------------------------------------===/ +#include "AttrTemplateInstantiate.h" #include "TreeTransform.h" #include "clang/AST/ASTConsumer.h" #include "clang/AST/ASTContext.h" @@ -88,9 +89,6 @@ bool TemplateDeclInstantiator::SubstQualifier(const TagDecl *OldDecl, return ::SubstQualifier(SemaRef, OldDecl, NewDecl, TemplateArgs); } -// Include attribute instantiation code. -#include "clang/Sema/AttrTemplateInstantiate.inc" - static void instantiateDependentAlignedAttr( Sema &S, const MultiLevelTemplateArgumentList &TemplateArgs, const AlignedAttr *Aligned, Decl *New, bool IsPackExpansion) { `````````` </details> https://github.com/llvm/llvm-project/pull/109436 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits