Skip to content

Commit f951676

Browse files
authored
Merge pull request #79 from ksromanov/patch-1
Enable LLVM17
2 parents 2c40146 + 2687c6a commit f951676

File tree

9 files changed

+41
-6
lines changed

9 files changed

+41
-6
lines changed

.travis.yml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,3 +36,10 @@ matrix:
3636
language: cpp
3737
sudo: true
3838
script: docker build --build-arg TARGET_LLVM_VERSION=15 --build-arg BASE_IMAGE=ubuntu:22.04 --build-arg GCC_VERSION=9 --build-arg IMAGE_REPO=jammy .
39+
- os: linux
40+
dist: jammy
41+
compiler: gcc
42+
language: cpp
43+
sudo: true
44+
script: docker build --build-arg TARGET_LLVM_VERSION=17 --build-arg BASE_IMAGE=ubuntu:22.04 --build-arg GCC_VERSION=9 --build-arg IMAGE_REPO=jammy .
45+

CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
cmake_minimum_required(VERSION 3.6)
22

33
project(clangmetatool C CXX)
4-
set(CMAKE_CXX_STANDARD 14)
4+
set(CMAKE_CXX_STANDARD 17)
55
set(CMAKE_CXX_STANDARD_REQUIRED ON)
66

77
find_package(Clang REQUIRED)

Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,4 +79,4 @@ RUN mkdir skeleton/build && cd skeleton/build && \
7979
cd - && rm -rf skeleton/build
8080

8181
# Run the tool on itself
82-
RUN yourtoolname $(find src skeleton -name '*.cpp') -- -std=gnu++14 -I$(llvm-config-$TARGET_LLVM_VERSION --includedir)
82+
RUN yourtoolname $(find src skeleton -name '*.cpp') -- -std=gnu++17 -I$(llvm-config-$TARGET_LLVM_VERSION --includedir)

skeleton/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
cmake_minimum_required(VERSION 3.6)
22

33
project( yourtoolname C CXX)
4-
set(CMAKE_CXX_STANDARD 14)
4+
set(CMAKE_CXX_STANDARD 17)
55
set(CMAKE_CXX_STANDARD_REQUIRED ON)
66

77
find_package(Clang REQUIRED)

src/collectors/definitions.cpp

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,13 @@ class DefinitionsDataAppender : public MatchFinder::MatchCallback {
2525

2626
clang::SourceManager *sm = r.SourceManager;
2727
const clang::FileID fid = sm->getFileID(e->getLocation());
28-
#if LLVM_VERSION_MAJOR >= 15
28+
#if LLVM_VERSION_MAJOR >= 17
29+
const clang::OptionalFileEntryRef entry = sm->getFileEntryRefForID(fid);
30+
if (!entry.has_value()) {
31+
return;
32+
}
33+
const types::FileUID fuid = entry.value().getUID();
34+
#elif LLVM_VERSION_MAJOR >= 15
2935
const llvm::Optional<clang::FileEntryRef> entry = sm->getFileEntryRefForID(fid);
3036
if (!entry.has_value()) {
3137
return;

src/collectors/include_graph/include_finder.cpp

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,12 @@
3636
#include <clang/Tooling/Core/Replacement.h>
3737
#include <clang/Tooling/Tooling.h>
3838

39+
#if LLVM_VERSION_MAJOR >= 17
40+
#include <optional>
41+
#else
3942
#include <llvm/ADT/Optional.h>
43+
#endif
44+
4045
#include <llvm/ADT/StringRef.h>
4146
#include <llvm/Support/CommandLine.h>
4247

@@ -55,7 +60,9 @@ using clangmetatool::types::MacroReferenceInfo;
5560
void IncludeFinder::InclusionDirective(
5661
clang::SourceLocation hashLoc, const clang::Token &includeToken,
5762
llvm::StringRef filename, bool isAngled,
58-
#if LLVM_VERSION_MAJOR >= 15
63+
#if LLVM_VERSION_MAJOR >= 17
64+
clang::CharSourceRange filenameRange, clang::OptionalFileEntryRef file,
65+
#elif LLVM_VERSION_MAJOR >= 15
5966
clang::CharSourceRange filenameRange, llvm::Optional<clang::FileEntryRef> file,
6067
#else
6168
clang::CharSourceRange filenameRange, const clang::FileEntry *file,

src/collectors/include_graph/include_finder.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,9 @@ class IncludeFinder : public clang::PPCallbacks {
3535
InclusionDirective(clang::SourceLocation hashLoc,
3636
const clang::Token &includeToken, llvm::StringRef filename,
3737
bool isAngled, clang::CharSourceRange filenameRange,
38-
#if LLVM_VERSION_MAJOR >= 15
38+
#if LLVM_VERSION_MAJOR >= 17
39+
clang::OptionalFileEntryRef File, llvm::StringRef SearchPath,
40+
#elif LLVM_VERSION_MAJOR >= 15
3941
llvm::Optional<clang::FileEntryRef> File, llvm::StringRef SearchPath,
4042
#else
4143
const clang::FileEntry *file, llvm::StringRef searchPath,

src/propagation/util/get_stmt_from_cfg_element.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,23 @@
11
#include "get_stmt_from_cfg_element.h"
22

3+
#if LLVM_VERSION_MAJOR >= 17
4+
#include <optional>
5+
#else
36
#include <llvm/ADT/Optional.h>
7+
#endif
48

59
namespace clangmetatool {
610
namespace propagation {
711
namespace util {
812

913
bool getStmtFromCFGElement(const clang::Stmt *&result,
1014
const clang::CFGElement &element) {
15+
#if LLVM_VERSION_MAJOR >= 17
16+
if (std::optional<clang::CFGStmt> opStmt = element.getAs<clang::CFGStmt>()) {
17+
#else
1118
if (llvm::Optional<clang::CFGStmt> opStmt = element.getAs<clang::CFGStmt>()) {
19+
#endif
20+
1221
result = opStmt->getStmt();
1322

1423
return true;

src/tool_application_support.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,11 @@ std::string getExecutablePathFromArgv(const std::string &argv0) {
4545
// Fall back to locating 'argv0' on $PATH if the parent path is not provided
4646
exePath = argv0;
4747
if (!llvm::sys::path::has_parent_path(exePath)) {
48+
#if LLVM_VERSION_MAJOR >= 17
49+
std::optional<std::string> maybeExePath =
50+
#else
4851
llvm::Optional<std::string> maybeExePath =
52+
#endif
4953
llvm::sys::Process::FindInEnvPath("PATH", argv0);
5054
#if LLVM_VERSION_MAJOR >= 15
5155
exePath = maybeExePath.value_or("");

0 commit comments

Comments
 (0)