diff --git a/src/indexer.cc b/src/indexer.cc index 17d8cc2d..77071226 100644 --- a/src/indexer.cc +++ b/src/indexer.cc @@ -377,10 +377,17 @@ const Decl *getAdjustedDecl(const Decl *d) { if (!s->isExplicitSpecialization()) { llvm::PointerUnion result = s->getSpecializedTemplateOrPartial(); +#if LLVM_VERSION_MAJOR >= 15 // llvmorg-15-init-10510-gaab5bd180a42 + if (auto *ctd = dyn_cast(result)) + d = ctd; + else + d = cast(result); +#else if (result.is()) d = result.get(); else d = result.get(); +#endif continue; } } else if (auto *d1 = r->getInstantiatedFromMemberClass()) { @@ -964,10 +971,17 @@ public: else if (auto *sd = dyn_cast(rd)) { llvm::PointerUnion result = sd->getSpecializedTemplateOrPartial(); +#if LLVM_VERSION_MAJOR >= 15 // llvmorg-15-init-10510-gaab5bd180a42 + if (auto *ctd = dyn_cast(result)) + d1 = ctd; + else + d1 = cast(result); +#else if (result.is()) d1 = result.get(); else d1 = result.get(); +#endif } else d1 = rd->getInstantiatedFromMemberClass(); @@ -1241,15 +1255,23 @@ IndexResult index(SemaManager *manager, WorkingFiles *wfiles, VFS *vfs, const st } IndexDiags dc; +#if LLVM_VERSION_MAJOR >= 21 + auto clang = std::make_unique(std::move(ci), pch); +#else auto clang = std::make_unique(pch); clang->setInvocation(std::move(ci)); +#endif clang->createDiagnostics( #if LLVM_VERSION_MAJOR >= 20 *fs, #endif &dc, false); clang->getDiagnostics().setIgnoreAllWarnings(true); +#if LLVM_VERSION_MAJOR >= 21 + clang->setTarget(TargetInfo::CreateTargetInfo(clang->getDiagnostics(), clang->getTargetOpts())); +#else clang->setTarget(TargetInfo::CreateTargetInfo(clang->getDiagnostics(), clang->getInvocation().TargetOpts)); +#endif if (!clang->hasTarget()) return {}; clang->getPreprocessorOpts().RetainRemappedFileBuffers = true; diff --git a/src/sema_manager.cc b/src/sema_manager.cc index b6b3df97..325c9a9c 100644 --- a/src/sema_manager.cc +++ b/src/sema_manager.cc @@ -261,14 +261,22 @@ std::unique_ptr buildCompilerInstance(Session &session, std::u else ci->getPreprocessorOpts().addRemappedFile(main, buf.get()); +#if LLVM_VERSION_MAJOR >= 21 + auto clang = std::make_unique(std::move(ci), session.pch); +#else auto clang = std::make_unique(session.pch); clang->setInvocation(std::move(ci)); +#endif clang->createDiagnostics( #if LLVM_VERSION_MAJOR >= 20 *fs, #endif &dc, false); +#if LLVM_VERSION_MAJOR >= 21 + clang->setTarget(TargetInfo::CreateTargetInfo(clang->getDiagnostics(), clang->getTargetOpts())); +#else clang->setTarget(TargetInfo::CreateTargetInfo(clang->getDiagnostics(), clang->getInvocation().TargetOpts)); +#endif if (!clang->hasTarget()) return nullptr; clang->getPreprocessorOpts().RetainRemappedFileBuffers = true;