Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit 0eb9faa

Browse files
committedMay 23, 2025·
Remove cling 1.0 support
1 parent 392b754 commit 0eb9faa

File tree

7 files changed

+17
-126
lines changed

7 files changed

+17
-126
lines changed
 

‎CMakeLists.txt

Lines changed: 9 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -67,13 +67,13 @@ if( CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR )
6767
include(GNUInstallDirs)
6868
## Define supported version of clang and llvm
6969

70-
set(CLANG_MIN_SUPPORTED 13.0)
70+
set(CLANG_MIN_SUPPORTED 16.0)
7171
set(CLANG_MAX_SUPPORTED "20.1.x")
7272
set(CLANG_VERSION_UPPER_BOUND 21.0.0)
73-
set(LLD_MIN_SUPPORTED 13.0)
73+
set(LLD_MIN_SUPPORTED 16.0)
7474
set(LLD_MAX_SUPPORTED "20.1.x")
7575
set(LLD_VERSION_UPPER_BOUND 21.0.0)
76-
set(LLVM_MIN_SUPPORTED 13.0)
76+
set(LLVM_MIN_SUPPORTED 16.0)
7777
set(LLVM_MAX_SUPPORTED "20.1.x")
7878
set(LLVM_VERSION_UPPER_BOUND 21.0.0)
7979

@@ -230,21 +230,12 @@ endif()
230230
message(STATUS "Found supported version: Clang ${CLANG_PACKAGE_VERSION}")
231231
message(STATUS "Using ClangConfig.cmake in: ${Clang_DIR}")
232232

233-
## Clang 13 require c++14 or later, Clang 16 require c++17 or later.
234-
if (CLANG_VERSION_MAJOR GREATER_EQUAL 16)
235-
if (NOT CMAKE_CXX_STANDARD)
236-
set (CMAKE_CXX_STANDARD 17)
237-
endif()
238-
if (CMAKE_CXX_STANDARD LESS 17)
239-
message(fatal "LLVM/CppInterOp requires c++17 or later")
240-
endif()
241-
elseif (CLANG_VERSION_MAJOR GREATER_EQUAL 13)
242-
if (NOT CMAKE_CXX_STANDARD)
243-
set (CMAKE_CXX_STANDARD 14)
244-
endif()
245-
if (CMAKE_CXX_STANDARD LESS 14)
246-
message(fatal "LLVM/CppInterOp requires c++14 or later")
247-
endif()
233+
## Clang 16 require c++17 or later.
234+
if (NOT CMAKE_CXX_STANDARD)
235+
set (CMAKE_CXX_STANDARD 17)
236+
endif()
237+
if (CMAKE_CXX_STANDARD LESS 17)
238+
message(fatal "LLVM/CppInterOp requires c++17 or later")
248239
endif()
249240

250241
## Find supported Cling

‎lib/Interpreter/Compatibility.h

Lines changed: 1 addition & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -112,35 +112,7 @@ inline void maybeMangleDeclName(const clang::GlobalDecl& GD,
112112
/// The getExecutionEngine() interface has been added for Cling based on LLVM
113113
/// >=18 and should be used in future releases.
114114
inline llvm::orc::LLJIT* getExecutionEngine(cling::Interpreter& I) {
115-
#if CLANG_VERSION_MAJOR >= 18
116115
return I.getExecutionEngine();
117-
#endif
118-
119-
unsigned m_ExecutorOffset = 0;
120-
121-
#if CLANG_VERSION_MAJOR == 13
122-
#ifdef __APPLE__
123-
m_ExecutorOffset = 62;
124-
#else
125-
m_ExecutorOffset = 72;
126-
#endif // __APPLE__
127-
#endif
128-
129-
// Note: The offsets changed in Cling based on LLVM 16 with the introduction of
130-
// a thread safe context - llvm::orc::ThreadSafeContext
131-
#if CLANG_VERSION_MAJOR == 16
132-
#ifdef __APPLE__
133-
m_ExecutorOffset = 68;
134-
#else
135-
m_ExecutorOffset = 78;
136-
#endif // __APPLE__
137-
#endif
138-
139-
int* IncrementalExecutor =
140-
((int*)(const_cast<cling::Interpreter*>(&I))) + m_ExecutorOffset;
141-
int* IncrementalJit = *(int**)IncrementalExecutor + 0;
142-
int* LLJIT = *(int**)IncrementalJit + 0;
143-
return *(llvm::orc::LLJIT**)LLJIT;
144116
}
145117

146118
inline llvm::Expected<llvm::JITTargetAddress>
@@ -152,12 +124,8 @@ getSymbolAddress(cling::Interpreter& I, llvm::StringRef IRName) {
152124
llvm::orc::SymbolNameVector Names;
153125
llvm::orc::ExecutionSession& ES = Jit.getExecutionSession();
154126
Names.push_back(ES.intern(IRName));
155-
#if CLANG_VERSION_MAJOR < 16
156-
return llvm::make_error<llvm::orc::SymbolsNotFound>(Names);
157-
#else
158127
return llvm::make_error<llvm::orc::SymbolsNotFound>(ES.getSymbolStringPool(),
159128
std::move(Names));
160-
#endif // CLANG_VERSION_MAJOR
161129
}
162130

163131
inline void codeComplete(std::vector<std::string>& Results,
@@ -238,9 +206,6 @@ namespace compat {
238206

239207
inline std::unique_ptr<clang::Interpreter>
240208
createClangInterpreter(std::vector<const char*>& args) {
241-
#if CLANG_VERSION_MAJOR < 16
242-
auto ciOrErr = clang::IncrementalCompilerBuilder::create(args);
243-
#else
244209
auto has_arg = [](const char* x, llvm::StringRef match = "cuda") {
245210
llvm::StringRef Arg = x;
246211
Arg = Arg.trim().ltrim('-');
@@ -270,23 +235,19 @@ createClangInterpreter(std::vector<const char*>& args) {
270235
DeviceCI = std::move(*devOrErr);
271236
}
272237
auto ciOrErr = CudaEnabled ? CB.CreateCudaHost() : CB.CreateCpp();
273-
#endif // CLANG_VERSION_MAJOR < 16
238+
274239
if (!ciOrErr) {
275240
llvm::logAllUnhandledErrors(ciOrErr.takeError(), llvm::errs(),
276241
"Failed to build Incremental compiler:");
277242
return nullptr;
278243
}
279-
#if CLANG_VERSION_MAJOR < 16
280-
auto innerOrErr = clang::Interpreter::create(std::move(*ciOrErr));
281-
#else
282244
(*ciOrErr)->LoadRequestedPlugins();
283245
if (CudaEnabled)
284246
DeviceCI->LoadRequestedPlugins();
285247
auto innerOrErr =
286248
CudaEnabled ? clang::Interpreter::createWithCUDA(std::move(*ciOrErr),
287249
std::move(DeviceCI))
288250
: clang::Interpreter::create(std::move(*ciOrErr));
289-
#endif // CLANG_VERSION_MAJOR < 16
290251

291252
if (!innerOrErr) {
292253
llvm::logAllUnhandledErrors(innerOrErr.takeError(), llvm::errs(),
@@ -333,29 +294,15 @@ inline void maybeMangleDeclName(const clang::GlobalDecl& GD,
333294
RawStr.flush();
334295
}
335296

336-
// Clang 13 - Initial implementation of Interpreter and clang-repl
337-
// Clang 14 - Add new Interpreter methods: getExecutionEngine,
338-
// getSymbolAddress, getSymbolAddressFromLinkerName
339-
// Clang 15 - Add new Interpreter methods: Undo
340297
// Clang 18 - Add new Interpreter methods: CodeComplete
341298

342299
inline llvm::orc::LLJIT* getExecutionEngine(clang::Interpreter& I) {
343-
#if CLANG_VERSION_MAJOR >= 14
344300
auto* engine = &llvm::cantFail(I.getExecutionEngine());
345301
return const_cast<llvm::orc::LLJIT*>(engine);
346-
#else
347-
assert(0 && "Not implemented in Clang <14!");
348-
return nullptr;
349-
#endif
350302
}
351303

352304
inline llvm::Expected<llvm::JITTargetAddress>
353305
getSymbolAddress(clang::Interpreter& I, llvm::StringRef IRName) {
354-
#if CLANG_VERSION_MAJOR < 14
355-
assert(0 && "Not implemented in Clang <14!");
356-
return llvm::createStringError(llvm::inconvertibleErrorCode(),
357-
"Not implemented in Clang <14!");
358-
#endif // CLANG_VERSION_MAJOR < 14
359306

360307
auto AddrOrErr = I.getSymbolAddress(IRName);
361308
if (llvm::Error Err = AddrOrErr.takeError())
@@ -373,7 +320,6 @@ getSymbolAddress(clang::Interpreter& I, clang::GlobalDecl GD) {
373320
inline llvm::Expected<llvm::JITTargetAddress>
374321
getSymbolAddressFromLinkerName(clang::Interpreter& I,
375322
llvm::StringRef LinkerName) {
376-
#if CLANG_VERSION_MAJOR >= 14
377323
const auto& DL = getExecutionEngine(I)->getDataLayout();
378324
char GlobalPrefix = DL.getGlobalPrefix();
379325
std::string LinkerNameTmp(LinkerName);
@@ -384,21 +330,10 @@ getSymbolAddressFromLinkerName(clang::Interpreter& I,
384330
if (llvm::Error Err = AddrOrErr.takeError())
385331
return std::move(Err);
386332
return AddrOrErr->getValue();
387-
#else
388-
assert(0 && "Not implemented in Clang <14!");
389-
return llvm::createStringError(llvm::inconvertibleErrorCode(),
390-
"Not implemented in Clang <14!");
391-
#endif
392333
}
393334

394335
inline llvm::Error Undo(clang::Interpreter& I, unsigned N = 1) {
395-
#if CLANG_VERSION_MAJOR >= 15
396336
return I.Undo(N);
397-
#else
398-
assert(0 && "Not implemented in Clang <15!");
399-
return llvm::createStringError(llvm::inconvertibleErrorCode(),
400-
"Not implemented in Clang <15!");
401-
#endif
402337
}
403338

404339
inline void codeComplete(std::vector<std::string>& Results,
@@ -451,34 +386,14 @@ using Interpreter = Cpp::Interpreter;
451386
namespace compat {
452387

453388
// Clang >= 14 change type name to string (spaces formatting problem)
454-
#if CLANG_VERSION_MAJOR >= 14
455389
inline std::string FixTypeName(const std::string type_name) {
456390
return type_name;
457391
}
458-
#else
459-
inline std::string FixTypeName(const std::string type_name) {
460-
std::string result = type_name;
461-
size_t pos = 0;
462-
while ((pos = result.find(" [", pos)) != std::string::npos) {
463-
result.erase(pos, 1);
464-
pos++;
465-
}
466-
return result;
467-
}
468-
#endif
469392

470-
// Clang >= 16 change CLANG_LIBDIR_SUFFIX to CLANG_INSTALL_LIBDIR_BASENAME
471-
#if CLANG_VERSION_MAJOR < 16
472-
#define CLANG_INSTALL_LIBDIR_BASENAME (llvm::Twine("lib") + CLANG_LIBDIR_SUFFIX)
473-
#endif
474393
inline std::string MakeResourceDir(llvm::StringRef Dir) {
475394
llvm::SmallString<128> P(Dir);
476395
llvm::sys::path::append(P, CLANG_INSTALL_LIBDIR_BASENAME, "clang",
477-
#if CLANG_VERSION_MAJOR < 16
478-
CLANG_VERSION_STRING
479-
#else
480396
CLANG_VERSION_MAJOR_STRING
481-
#endif
482397
);
483398
return std::string(P.str());
484399
}

‎lib/Interpreter/CppInterOp.cpp

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3046,11 +3046,7 @@ namespace Cpp {
30463046
std::string detected_resource_dir = outs.back();
30473047

30483048
std::string version =
3049-
#if CLANG_VERSION_MAJOR < 16
3050-
CLANG_VERSION_STRING;
3051-
#else
30523049
CLANG_VERSION_MAJOR_STRING;
3053-
#endif
30543050
// We need to check if the detected resource directory is compatible.
30553051
if (llvm::sys::path::filename(detected_resource_dir) != version)
30563052
return "";

‎package-lock.json

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎unittests/CMakeLists.txt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ if(EMSCRIPTEN)
1111
set(gtest_libs gtest gmock)
1212
else()
1313
set(gtest_libs gtest gtest_main)
14-
# Clang prior than clang13 (I think) merges both gmock into gtest.
1514
if (TARGET gmock)
1615
list(APPEND gtest_libs gmock gmock_main)
1716
endif()

‎unittests/CppInterOp/CUDATest.cpp

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,6 @@ using namespace TestUtils;
99

1010
static bool HasCudaSDK() {
1111
auto supportsCudaSDK = []() {
12-
#if CLANG_VERSION_MAJOR < 16
13-
// FIXME: Enable this for cling.
14-
return false;
15-
#endif // CLANG_VERSION_MAJOR < 16
1612
if (!Cpp::CreateInterpreter({}, {"--cuda"}))
1713
return false;
1814
return Cpp::Declare("__global__ void test_func() {}"
@@ -24,10 +20,6 @@ static bool HasCudaSDK() {
2420

2521
static bool HasCudaRuntime() {
2622
auto supportsCuda = []() {
27-
#if CLANG_VERSION_MAJOR < 16
28-
// FIXME: Enable this for cling.
29-
return false;
30-
#endif //CLANG_VERSION_MAJOR < 16
3123
if (!HasCudaSDK())
3224
return false;
3325

@@ -43,11 +35,7 @@ static bool HasCudaRuntime() {
4335
return hasCuda;
4436
}
4537

46-
#if CLANG_VERSION_MAJOR < 16
47-
TEST(DISABLED_CUDATest, Sanity) {
48-
#else
4938
TEST(CUDATest, Sanity) {
50-
#endif // CLANG_VERSION_MAJOR < 16
5139
#ifdef _WIN32
5240
GTEST_SKIP() << "Disabled on Windows. Needs fixing.";
5341
#endif
@@ -76,4 +64,4 @@ TEST(CUDATest, CUDARuntime) {
7664
GTEST_SKIP() << "Skipping CUDA tests as CUDA runtime not found";
7765

7866
EXPECT_TRUE(HasCudaRuntime());
79-
}
67+
}

‎unittests/CppInterOp/ScopeReflectionTest.cpp

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -859,14 +859,10 @@ template<class T> constexpr T pi = T(3.1415926535897932385L);
859859
auto* VD = cast<VarTemplateSpecializationDecl>((Decl*)Instance1);
860860
VarTemplateDecl* VDTD1 = VD->getSpecializedTemplate();
861861
EXPECT_TRUE(VDTD1->isThisDeclarationADefinition());
862-
#if CLANG_VERSION_MAJOR > 13
863862
#if CLANG_VERSION_MAJOR <= 18
864863
TemplateArgument TA1 = (*VD->getTemplateArgsInfo())[0].getArgument();
865864
#else
866865
TemplateArgument TA1 = (*VD->getTemplateArgsAsWritten())[0].getArgument();
867-
#endif // CLANG_VERSION_MAJOR
868-
#else
869-
TemplateArgument TA1 = VD->getTemplateArgsInfo()[0].getArgument();
870866
#endif // CLANG_VERSION_MAJOR
871867
EXPECT_TRUE(TA1.getAsType()->isIntegerType());
872868
}

0 commit comments

Comments
 (0)
Please sign in to comment.