@@ -122,12 +122,8 @@ getSymbolAddress(cling::Interpreter& I, llvm::StringRef IRName) {
122
122
llvm::orc::SymbolNameVector Names;
123
123
llvm::orc::ExecutionSession& ES = Jit.getExecutionSession ();
124
124
Names.push_back (ES.intern (IRName));
125
- #if CLANG_VERSION_MAJOR < 16
126
- return llvm::make_error<llvm::orc::SymbolsNotFound>(Names);
127
- #else
128
125
return llvm::make_error<llvm::orc::SymbolsNotFound>(ES.getSymbolStringPool (),
129
126
std::move (Names));
130
- #endif // CLANG_VERSION_MAJOR
131
127
}
132
128
133
129
inline void codeComplete (std::vector<std::string>& Results,
@@ -208,9 +204,6 @@ namespace compat {
208
204
209
205
inline std::unique_ptr<clang::Interpreter>
210
206
createClangInterpreter (std::vector<const char *>& args) {
211
- #if CLANG_VERSION_MAJOR < 16
212
- auto ciOrErr = clang::IncrementalCompilerBuilder::create (args);
213
- #else
214
207
auto has_arg = [](const char * x, llvm::StringRef match = " cuda" ) {
215
208
llvm::StringRef Arg = x;
216
209
Arg = Arg.trim ().ltrim (' -' );
@@ -240,23 +233,19 @@ createClangInterpreter(std::vector<const char*>& args) {
240
233
DeviceCI = std::move (*devOrErr);
241
234
}
242
235
auto ciOrErr = CudaEnabled ? CB.CreateCudaHost () : CB.CreateCpp ();
243
- # endif // CLANG_VERSION_MAJOR < 16
236
+
244
237
if (!ciOrErr) {
245
238
llvm::logAllUnhandledErrors (ciOrErr.takeError (), llvm::errs (),
246
239
" Failed to build Incremental compiler:" );
247
240
return nullptr ;
248
241
}
249
- #if CLANG_VERSION_MAJOR < 16
250
- auto innerOrErr = clang::Interpreter::create (std::move (*ciOrErr));
251
- #else
252
242
(*ciOrErr)->LoadRequestedPlugins ();
253
243
if (CudaEnabled)
254
244
DeviceCI->LoadRequestedPlugins ();
255
245
auto innerOrErr =
256
246
CudaEnabled ? clang::Interpreter::createWithCUDA (std::move (*ciOrErr),
257
247
std::move (DeviceCI))
258
248
: clang::Interpreter::create (std::move (*ciOrErr));
259
- #endif // CLANG_VERSION_MAJOR < 16
260
249
261
250
if (!innerOrErr) {
262
251
llvm::logAllUnhandledErrors (innerOrErr.takeError (), llvm::errs (),
@@ -303,29 +292,15 @@ inline void maybeMangleDeclName(const clang::GlobalDecl& GD,
303
292
RawStr.flush ();
304
293
}
305
294
306
- // Clang 13 - Initial implementation of Interpreter and clang-repl
307
- // Clang 14 - Add new Interpreter methods: getExecutionEngine,
308
- // getSymbolAddress, getSymbolAddressFromLinkerName
309
- // Clang 15 - Add new Interpreter methods: Undo
310
295
// Clang 18 - Add new Interpreter methods: CodeComplete
311
296
312
297
inline llvm::orc::LLJIT* getExecutionEngine (clang::Interpreter& I) {
313
- #if CLANG_VERSION_MAJOR >= 14
314
298
auto * engine = &llvm::cantFail (I.getExecutionEngine ());
315
299
return const_cast <llvm::orc::LLJIT*>(engine);
316
- #else
317
- assert (0 && " Not implemented in Clang <14!" );
318
- return nullptr ;
319
- #endif
320
300
}
321
301
322
302
inline llvm::Expected<llvm::JITTargetAddress>
323
303
getSymbolAddress (clang::Interpreter& I, llvm::StringRef IRName) {
324
- #if CLANG_VERSION_MAJOR < 14
325
- assert (0 && " Not implemented in Clang <14!" );
326
- return llvm::createStringError (llvm::inconvertibleErrorCode (),
327
- " Not implemented in Clang <14!" );
328
- #endif // CLANG_VERSION_MAJOR < 14
329
304
330
305
auto AddrOrErr = I.getSymbolAddress (IRName);
331
306
if (llvm::Error Err = AddrOrErr.takeError ())
@@ -343,7 +318,6 @@ getSymbolAddress(clang::Interpreter& I, clang::GlobalDecl GD) {
343
318
inline llvm::Expected<llvm::JITTargetAddress>
344
319
getSymbolAddressFromLinkerName (clang::Interpreter& I,
345
320
llvm::StringRef LinkerName) {
346
- #if CLANG_VERSION_MAJOR >= 14
347
321
const auto & DL = getExecutionEngine (I)->getDataLayout ();
348
322
char GlobalPrefix = DL.getGlobalPrefix ();
349
323
std::string LinkerNameTmp (LinkerName);
@@ -354,21 +328,10 @@ getSymbolAddressFromLinkerName(clang::Interpreter& I,
354
328
if (llvm::Error Err = AddrOrErr.takeError ())
355
329
return std::move (Err);
356
330
return AddrOrErr->getValue ();
357
- #else
358
- assert (0 && " Not implemented in Clang <14!" );
359
- return llvm::createStringError (llvm::inconvertibleErrorCode (),
360
- " Not implemented in Clang <14!" );
361
- #endif
362
331
}
363
332
364
333
inline llvm::Error Undo (clang::Interpreter& I, unsigned N = 1 ) {
365
- #if CLANG_VERSION_MAJOR >= 15
366
334
return I.Undo (N);
367
- #else
368
- assert (0 && " Not implemented in Clang <15!" );
369
- return llvm::createStringError (llvm::inconvertibleErrorCode (),
370
- " Not implemented in Clang <15!" );
371
- #endif
372
335
}
373
336
374
337
inline void codeComplete (std::vector<std::string>& Results,
@@ -421,34 +384,14 @@ using Interpreter = Cpp::Interpreter;
421
384
namespace compat {
422
385
423
386
// Clang >= 14 change type name to string (spaces formatting problem)
424
- #if CLANG_VERSION_MAJOR >= 14
425
387
inline std::string FixTypeName (const std::string type_name) {
426
388
return type_name;
427
389
}
428
- #else
429
- inline std::string FixTypeName (const std::string type_name) {
430
- std::string result = type_name;
431
- size_t pos = 0 ;
432
- while ((pos = result.find (" [" , pos)) != std::string::npos) {
433
- result.erase (pos, 1 );
434
- pos++;
435
- }
436
- return result;
437
- }
438
- #endif
439
390
440
- // Clang >= 16 change CLANG_LIBDIR_SUFFIX to CLANG_INSTALL_LIBDIR_BASENAME
441
- #if CLANG_VERSION_MAJOR < 16
442
- #define CLANG_INSTALL_LIBDIR_BASENAME (llvm::Twine(" lib" ) + CLANG_LIBDIR_SUFFIX)
443
- #endif
444
391
inline std::string MakeResourceDir (llvm::StringRef Dir) {
445
392
llvm::SmallString<128 > P (Dir);
446
393
llvm::sys::path::append (P, CLANG_INSTALL_LIBDIR_BASENAME, " clang" ,
447
- #if CLANG_VERSION_MAJOR < 16
448
- CLANG_VERSION_STRING
449
- #else
450
394
CLANG_VERSION_MAJOR_STRING
451
- #endif
452
395
);
453
396
return std::string (P.str ());
454
397
}
0 commit comments