| From fbbfc2757736be38ac38eb26c20bf6b36dd8fc6c Mon Sep 17 00:00:00 2001 |
| From: Christopher Di Bella <cjdb@google.com> |
| Date: Tue, 9 Aug 2022 01:01:16 +0000 |
| Subject: [PATCH] refactors so that the project is LLVM 15-compatible |
| |
| * replaces `Invocation.setLangDefaults` with |
| `LangOptions::setLangDefaults` |
| * Fixes virtual interface |
| |
| Fixes #74 |
| |
| Co-authored-by: Martin Liska <mliska@suse.cz> |
| --- |
| clang_delta/ExpressionDetector.cpp | 16 +++++++++++++-- |
| clang_delta/TransformationManager.cpp | 29 ++++++++++++++++++++++++--- |
| 2 files changed, 40 insertions(+), 5 deletions(-) |
| |
| diff --git a/clang_delta/ExpressionDetector.cpp b/clang_delta/ExpressionDetector.cpp |
| index 3e03982..b15983a 100644 |
| --- a/clang_delta/ExpressionDetector.cpp |
| +++ b/clang_delta/ExpressionDetector.cpp |
| @@ -16,6 +16,9 @@ |
| |
| #include "clang/AST/RecursiveASTVisitor.h" |
| #include "clang/AST/ASTContext.h" |
| +#if LLVM_VERSION_MAJOR >= 15 |
| +#include "clang/Basic/FileEntry.h" |
| +#endif |
| #include "clang/Basic/SourceManager.h" |
| #include "clang/Lex/Preprocessor.h" |
| |
| @@ -62,7 +65,12 @@ public: |
| virtual void InclusionDirective(SourceLocation HashLoc, |
| const Token &IncludeTok, |
| StringRef FileName, bool IsAngled, |
| - CharSourceRange FilenameRange, const FileEntry *File, |
| + CharSourceRange FilenameRange, |
| +#if LLVM_VERSION_MAJOR < 15 |
| + const FileEntry *File, |
| +#else |
| + Optional<FileEntryRef> File, |
| +#endif |
| StringRef SearchPath, StringRef RelativePath, |
| const Module *Imported, |
| SrcMgr::CharacteristicKind FileType) override; |
| @@ -80,9 +88,13 @@ private: |
| void IncludesPPCallbacks::InclusionDirective(SourceLocation HashLoc, |
| const Token &/*IncludeTok*/, |
| StringRef FileName, |
| - bool /*IsAngled*/, |
| + bool /*IsAngled*/, |
| CharSourceRange /*FilenameRange*/, |
| +#if LLVM_VERSION_MAJOR < 15 |
| const FileEntry * /*File*/, |
| +#else |
| + Optional<FileEntryRef> /*File*/, |
| +#endif |
| StringRef /*SearchPath*/, |
| StringRef /*RelativePath*/, |
| const Module * /*Imported*/, |
| diff --git a/clang_delta/TransformationManager.cpp b/clang_delta/TransformationManager.cpp |
| index b642c70..5af354c 100644 |
| --- a/clang_delta/TransformationManager.cpp |
| +++ b/clang_delta/TransformationManager.cpp |
| @@ -20,6 +20,10 @@ |
| #include "clang/Basic/Builtins.h" |
| #include "clang/Basic/Diagnostic.h" |
| #include "clang/Basic/FileManager.h" |
| +#if LLVM_VERSION_MAJOR >= 15 |
| +#include "clang/Basic/LangOptions.h" |
| +#include "clang/Basic/LangStandard.h" |
| +#endif |
| #include "clang/Basic/TargetInfo.h" |
| #include "clang/Lex/Preprocessor.h" |
| #include "clang/Frontend/CompilerInstance.h" |
| @@ -151,7 +155,7 @@ bool TransformationManager::initializeCompilerInstance(std::string &ErrorMsg) |
| Invocation.setLangDefaults(ClangInstance->getLangOpts(), InputKind(Language::CXX), T, PPOpts, LSTD); |
| } |
| else if(IK.getLanguage() == Language::OpenCL) { |
| -#else |
| +#elif LLVM_VERSION_MAJOR < 15 |
| vector<string> includes; |
| if (IK.getLanguage() == Language::C) { |
| Invocation.setLangDefaults(ClangInstance->getLangOpts(), InputKind(Language::C), T, includes); |
| @@ -163,6 +167,18 @@ bool TransformationManager::initializeCompilerInstance(std::string &ErrorMsg) |
| Invocation.setLangDefaults(ClangInstance->getLangOpts(), InputKind(Language::CXX), T, includes, LSTD); |
| } |
| else if(IK.getLanguage() == Language::OpenCL) { |
| +#else |
| + vector<string> includes; |
| + if (IK.getLanguage() == Language::C) { |
| + LangOptions::setLangDefaults(ClangInstance->getLangOpts(), Language::C, T, includes); |
| + } |
| + else if (IK.getLanguage() == Language::CXX) { |
| + // ISSUE: it might cause some problems when building AST |
| + // for a function which has a non-declared callee, e.g., |
| + // It results an empty AST for the caller. |
| + LangOptions::setLangDefaults(ClangInstance->getLangOpts(), Language::CXX, T, includes, LSTD); |
| + } |
| + else if(IK.getLanguage() == Language::OpenCL) { |
| #endif |
| //Commandline parameters |
| std::vector<const char*> Args; |
| @@ -191,11 +207,18 @@ bool TransformationManager::initializeCompilerInstance(std::string &ErrorMsg) |
| &Args[0], &Args[0] + Args.size(), |
| #endif |
| ClangInstance->getDiagnostics()); |
| +#if LLVM_VERSION_MAJOR < 15 |
| Invocation.setLangDefaults(ClangInstance->getLangOpts(), |
| -#if LLVM_VERSION_MAJOR >= 10 |
| - InputKind(Language::OpenCL), |
| #else |
| + LangOptions::setLangDefaults(ClangInstance->getLangOpts(), |
| +#endif |
| + |
| +#if LLVM_VERSION_MAJOR < 10 |
| InputKind::OpenCL, |
| +#elif LLVM_VERSION_MAJOR < 15 |
| + InputKind(Language::OpenCL), |
| +#else |
| + Language::OpenCL, |
| #endif |
| |
| #if LLVM_VERSION_MAJOR < 12 |
| -- |
| 2.37.1.559.g78731f0fdb-goog |
| |