|  | 
|  | 1 | +#ifndef INCLUDED_RUSTC_LLVM_LLVMWRAPPER_H | 
|  | 2 | +#define INCLUDED_RUSTC_LLVM_LLVMWRAPPER_H | 
|  | 3 | + | 
| 1 | 4 | #include "SuppressLLVMWarnings.h" | 
| 2 | 5 | 
 | 
| 3 |  | -#include "llvm-c/BitReader.h" | 
| 4 |  | -#include "llvm-c/Core.h" | 
| 5 |  | -#include "llvm-c/Object.h" | 
| 6 |  | -#include "llvm/ADT/ArrayRef.h" | 
| 7 |  | -#include "llvm/ADT/DenseSet.h" | 
| 8 |  | -#include "llvm/ADT/SmallVector.h" | 
| 9 |  | -#include "llvm/Analysis/Lint.h" | 
| 10 |  | -#include "llvm/Analysis/Passes.h" | 
| 11 |  | -#include "llvm/IR/IRBuilder.h" | 
| 12 |  | -#include "llvm/IR/InlineAsm.h" | 
| 13 |  | -#include "llvm/IR/LLVMContext.h" | 
| 14 |  | -#include "llvm/IR/Module.h" | 
| 15 |  | -#include "llvm/Support/CommandLine.h" | 
| 16 |  | -#include "llvm/Support/Debug.h" | 
| 17 |  | -#include "llvm/Support/DynamicLibrary.h" | 
| 18 |  | -#include "llvm/Support/FormattedStream.h" | 
| 19 |  | -#include "llvm/Support/JSON.h" | 
| 20 |  | -#include "llvm/Support/Memory.h" | 
| 21 |  | -#include "llvm/Support/SourceMgr.h" | 
| 22 |  | -#include "llvm/Support/TargetSelect.h" | 
| 23 |  | -#include "llvm/Support/Timer.h" | 
| 24 |  | -#include "llvm/Support/raw_ostream.h" | 
| 25 |  | -#include "llvm/Target/TargetMachine.h" | 
| 26 |  | -#include "llvm/Target/TargetOptions.h" | 
| 27 |  | -#include "llvm/Transforms/IPO.h" | 
| 28 |  | -#include "llvm/Transforms/Scalar.h" | 
|  | 6 | +#include "llvm/Config/llvm-config.h"  // LLVM_VERSION_MAJOR, LLVM_VERSION_MINOR | 
|  | 7 | +#include "llvm/Support/raw_ostream.h" // llvm::raw_ostream | 
|  | 8 | +#include <cstddef>                    // size_t etc | 
|  | 9 | +#include <cstdint>                    // uint64_t etc | 
| 29 | 10 | 
 | 
| 30 | 11 | #define LLVM_VERSION_GE(major, minor)                                          \ | 
| 31 | 12 |   (LLVM_VERSION_MAJOR > (major) ||                                             \ | 
| 32 | 13 |    LLVM_VERSION_MAJOR == (major) && LLVM_VERSION_MINOR >= (minor)) | 
| 33 | 14 | 
 | 
| 34 | 15 | #define LLVM_VERSION_LT(major, minor) (!LLVM_VERSION_GE((major), (minor))) | 
| 35 | 16 | 
 | 
| 36 |  | -#if LLVM_VERSION_GE(20, 0) | 
| 37 |  | -#include "llvm/Transforms/Utils/Instrumentation.h" | 
| 38 |  | -#else | 
| 39 |  | -#include "llvm/Transforms/Instrumentation.h" | 
| 40 |  | -#endif | 
| 41 |  | - | 
| 42 |  | -#include "llvm/IR/LegacyPassManager.h" | 
| 43 |  | - | 
| 44 |  | -#include "llvm/Bitcode/BitcodeReader.h" | 
| 45 |  | -#include "llvm/Bitcode/BitcodeWriter.h" | 
| 46 |  | - | 
| 47 |  | -#include "llvm/IR/DIBuilder.h" | 
| 48 |  | -#include "llvm/IR/DebugInfo.h" | 
| 49 |  | -#include "llvm/IR/IRPrintingPasses.h" | 
| 50 |  | -#include "llvm/Linker/Linker.h" | 
| 51 |  | - | 
| 52 |  | -#include "llvm/TargetParser/Triple.h" | 
| 53 |  | - | 
| 54 | 17 | extern "C" void LLVMRustSetLastError(const char *); | 
| 55 | 18 | 
 | 
| 56 | 19 | enum class LLVMRustResult { Success, Failure }; | 
| 57 | 20 | 
 | 
| 58 |  | -enum LLVMRustAttribute { | 
| 59 |  | -  AlwaysInline = 0, | 
| 60 |  | -  ByVal = 1, | 
| 61 |  | -  Cold = 2, | 
| 62 |  | -  InlineHint = 3, | 
| 63 |  | -  MinSize = 4, | 
| 64 |  | -  Naked = 5, | 
| 65 |  | -  NoAlias = 6, | 
| 66 |  | -  NoCapture = 7, | 
| 67 |  | -  NoInline = 8, | 
| 68 |  | -  NonNull = 9, | 
| 69 |  | -  NoRedZone = 10, | 
| 70 |  | -  NoReturn = 11, | 
| 71 |  | -  NoUnwind = 12, | 
| 72 |  | -  OptimizeForSize = 13, | 
| 73 |  | -  ReadOnly = 14, | 
| 74 |  | -  SExt = 15, | 
| 75 |  | -  StructRet = 16, | 
| 76 |  | -  UWTable = 17, | 
| 77 |  | -  ZExt = 18, | 
| 78 |  | -  InReg = 19, | 
| 79 |  | -  SanitizeThread = 20, | 
| 80 |  | -  SanitizeAddress = 21, | 
| 81 |  | -  SanitizeMemory = 22, | 
| 82 |  | -  NonLazyBind = 23, | 
| 83 |  | -  OptimizeNone = 24, | 
| 84 |  | -  ReadNone = 26, | 
| 85 |  | -  SanitizeHWAddress = 28, | 
| 86 |  | -  WillReturn = 29, | 
| 87 |  | -  StackProtectReq = 30, | 
| 88 |  | -  StackProtectStrong = 31, | 
| 89 |  | -  StackProtect = 32, | 
| 90 |  | -  NoUndef = 33, | 
| 91 |  | -  SanitizeMemTag = 34, | 
| 92 |  | -  NoCfCheck = 35, | 
| 93 |  | -  ShadowCallStack = 36, | 
| 94 |  | -  AllocSize = 37, | 
| 95 |  | -  AllocatedPointer = 38, | 
| 96 |  | -  AllocAlign = 39, | 
| 97 |  | -  SanitizeSafeStack = 40, | 
| 98 |  | -  FnRetThunkExtern = 41, | 
| 99 |  | -  Writable = 42, | 
| 100 |  | -  DeadOnUnwind = 43, | 
| 101 |  | -}; | 
| 102 |  | - | 
| 103 | 21 | typedef struct OpaqueRustString *RustStringRef; | 
| 104 | 22 | typedef struct LLVMOpaqueTwine *LLVMTwineRef; | 
| 105 | 23 | typedef struct LLVMOpaqueSMDiagnostic *LLVMSMDiagnosticRef; | 
| @@ -127,3 +45,5 @@ class RawRustStringOstream : public llvm::raw_ostream { | 
| 127 | 45 |     flush(); | 
| 128 | 46 |   } | 
| 129 | 47 | }; | 
|  | 48 | + | 
|  | 49 | +#endif // INCLUDED_RUSTC_LLVM_LLVMWRAPPER_H | 
0 commit comments