From 1e6e9ae96aed3319fab236624aac225a3b5c41e9 Mon Sep 17 00:00:00 2001 From: Krystian Stasiowski Date: Mon, 27 May 2024 10:08:23 -0400 Subject: [PATCH] chore: bump LLVM to 7a28a5b3 --- .github/workflows/ci.yml | 2 +- README.adoc | 2 +- docs/modules/ROOT/pages/install.adoc | 4 ++-- src/lib/AST/ASTVisitor.cpp | 31 ++++++---------------------- src/lib/Lib/ConfigImpl.cpp | 2 +- src/lib/Support/Yaml.cpp | 2 +- 6 files changed, 12 insertions(+), 31 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index a7bf99a20..ac551de1c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -175,7 +175,7 @@ jobs: - name: LLVM Parameters id: llvm-parameters run: | - echo -E "llvm-hash=5b959310b0fae723bd119ed8815bf1cb1a8c67d4" >> $GITHUB_OUTPUT + echo -E "llvm-hash=7a28a5b3fee6c78ad59af79a3d03c00db153c49f" >> $GITHUB_OUTPUT echo -E "llvm-build-preset=${{ runner.os == 'Windows' && 'release-win' || 'release-unix' }}" >> $GITHUB_OUTPUT cd .. llvm_root=$(pwd)/third-party/llvm-project/install diff --git a/README.adoc b/README.adoc index b6ca538d5..33acec917 100644 --- a/README.adoc +++ b/README.adoc @@ -9,7 +9,7 @@ Here are the instructions to install LLVM with the settings required by this pro ---- git clone https://github.com/llvm/llvm-project.git cd llvm-project -git checkout 5b959310b0fae723bd119ed8815bf1cb1a8c67d4 +git checkout 7a28a5b3fee6c78ad59af79a3d03c00db153c49f cmake -S llvm -B build -D LLVM_ENABLE_PROJECTS="clang;clang-tools-extra" -D CMAKE_BUILD_TYPE=Release -D LLVM_ENABLE_RTTI=ON -D CMAKE_INSTALL_PREFIX=/path/to/llvm+clang cd build cmake --build . -j --config Release diff --git a/docs/modules/ROOT/pages/install.adoc b/docs/modules/ROOT/pages/install.adoc index 2a8003881..9e3e74ce6 100644 --- a/docs/modules/ROOT/pages/install.adoc +++ b/docs/modules/ROOT/pages/install.adoc @@ -295,7 +295,7 @@ NOTE: These examples assume VcPkg is already installed in the `third-party/vcpkg === LLVM MrDocs uses LLVM to parse C++ code and extract documentation from it. -It depends on a recent version of LLVM: https://github.com/llvm/llvm-project/tree/5b959310b0fae723bd119ed8815bf1cb1a8c67d4[5b959310] +It depends on a recent version of LLVM: https://github.com/llvm/llvm-project/tree/7a28a5b3fee6c78ad59af79a3d03c00db153c49f[7a28a5b3] **Download**: @@ -308,7 +308,7 @@ mkdir -p llvm-project <.> cd llvm-project git init <.> git remote add origin https://github.com/llvm/llvm-project.git <.> -git fetch --depth 1 origin 5b959310b0fae723bd119ed8815bf1cb1a8c67d4 <.> +git fetch --depth 1 origin 7a28a5b3fee6c78ad59af79a3d03c00db153c49f <.> git checkout FETCH_HEAD <.> ---- diff --git a/src/lib/AST/ASTVisitor.cpp b/src/lib/AST/ASTVisitor.cpp index c8ce36d57..76ecf3dba 100644 --- a/src/lib/AST/ASTVisitor.cpp +++ b/src/lib/AST/ASTVisitor.cpp @@ -1045,11 +1045,8 @@ class ASTVisitor if(P->wasDeclaredWithTypename()) R->KeyKind = TParamKeyKind::Typename; if(P->hasDefaultArgument()) - { - QualType QT = P->getDefaultArgument(); R->Default = buildTemplateArg( - TemplateArgument(QT, QT.isNull(), true)); - } + P->getDefaultArgument().getArgument()); return R; } else if constexpr(kind == Decl::NonTypeTemplateParm) @@ -1057,26 +1054,20 @@ class ASTVisitor auto R = std::make_unique(); R->Type = buildTypeInfo(P->getType()); if(P->hasDefaultArgument()) - { R->Default = buildTemplateArg( - TemplateArgument(P->getDefaultArgument(), true)); - } + P->getDefaultArgument().getArgument()); return R; } else if constexpr(kind == Decl::TemplateTemplateParm) { auto R = std::make_unique(); for(const NamedDecl* NP : *P->getTemplateParameters()) - { R->Params.emplace_back( buildTemplateParam(NP)); - } if(P->hasDefaultArgument()) - { R->Default = buildTemplateArg( P->getDefaultArgument().getArgument()); - } return R; } MRDOCS_UNREACHABLE(); @@ -2641,13 +2632,8 @@ traverse( if(auto* CTSD = dyn_cast(D)) { extractSymbolID(getInstantiatedFrom(CTD), Template->Primary); - // KRYSTIAN NOTE: when this is a partial specialization, we could use - // ClassTemplatePartialSpecializationDecl::getTemplateArgsAsWritten - MRDOCS_ASSERT(CTSD->getTypeAsWritten()); - const TypeSourceInfo* TSI = CTSD->getTypeAsWritten(); - buildTemplateArgs(Template->Args, TSI->getType()->getAs< - TemplateSpecializationType>()->template_arguments()); - + // extract the template arguments of the specialization + buildTemplateArgs(Template->Args, CTSD->getTemplateArgsAsWritten()); // extract the template parameters if this is a partial specialization if(auto* CTPSD = dyn_cast(D)) buildTemplateParams(*I.Template, CTPSD->getTemplateParameters()); @@ -2683,16 +2669,11 @@ traverse( if(auto* VTSD = dyn_cast(D)) { extractSymbolID(getInstantiatedFrom(VTD), Template->Primary); - const ASTTemplateArgumentListInfo* Args = VTSD->getTemplateArgsInfo(); + // extract the template arguments of the specialization + buildTemplateArgs(Template->Args, VTSD->getTemplateArgsAsWritten()); // extract the template parameters if this is a partial specialization if(auto* VTPSD = dyn_cast(D)) - { - // getTemplateArgsInfo returns nullptr for partial specializations, - // so we use getTemplateArgsAsWritten if this is a partial specialization - Args = VTPSD->getTemplateArgsAsWritten(); buildTemplateParams(*I.Template, VTPSD->getTemplateParameters()); - } - buildTemplateArgs(Template->Args, Args); } else { diff --git a/src/lib/Lib/ConfigImpl.cpp b/src/lib/Lib/ConfigImpl.cpp index edea9e752..d2abcaf81 100644 --- a/src/lib/Lib/ConfigImpl.cpp +++ b/src/lib/Lib/ConfigImpl.cpp @@ -249,7 +249,7 @@ shouldVisitSymbol( return true; } // Prefix match - if (filePath.startswith(p)) + if (filePath.starts_with(p)) { bool validPattern = std::ranges::any_of( settings_.input.filePatterns, diff --git a/src/lib/Support/Yaml.cpp b/src/lib/Support/Yaml.cpp index 938a9f22e..315db6df1 100644 --- a/src/lib/Support/Yaml.cpp +++ b/src/lib/Support/Yaml.cpp @@ -31,7 +31,7 @@ diag( break; case llvm::SourceMgr::DiagKind::DK_Warning: { - if(D.getMessage().startswith("unknown key ")) + if(D.getMessage().starts_with("unknown key ")) { // don't show these return;