120
|
1 //===- llvm/Support/CodeGenCWrappers.h - CodeGen C Wrappers -----*- C++ -*-===//
|
|
2 //
|
|
3 // The LLVM Compiler Infrastructure
|
|
4 //
|
|
5 // This file is distributed under the University of Illinois Open Source
|
|
6 // License. See LICENSE.TXT for details.
|
|
7 //
|
|
8 //===----------------------------------------------------------------------===//
|
|
9 //
|
|
10 // This file defines C bindings wrappers for enums in llvm/Support/CodeGen.h
|
|
11 // that need them. The wrappers are separated to avoid adding an indirect
|
|
12 // dependency on llvm/Config/Targets.def to CodeGen.h.
|
|
13 //
|
|
14 //===----------------------------------------------------------------------===//
|
|
15
|
|
16 #ifndef LLVM_SUPPORT_CODEGENCWRAPPERS_H
|
|
17 #define LLVM_SUPPORT_CODEGENCWRAPPERS_H
|
|
18
|
|
19 #include "llvm-c/TargetMachine.h"
|
121
|
20 #include "llvm/ADT/Optional.h"
|
120
|
21 #include "llvm/Support/CodeGen.h"
|
|
22 #include "llvm/Support/ErrorHandling.h"
|
|
23
|
|
24 namespace llvm {
|
|
25
|
121
|
26 inline Optional<CodeModel::Model> unwrap(LLVMCodeModel Model, bool &JIT) {
|
|
27 JIT = false;
|
120
|
28 switch (Model) {
|
121
|
29 case LLVMCodeModelJITDefault:
|
|
30 JIT = true;
|
|
31 LLVM_FALLTHROUGH;
|
120
|
32 case LLVMCodeModelDefault:
|
121
|
33 return None;
|
120
|
34 case LLVMCodeModelSmall:
|
|
35 return CodeModel::Small;
|
|
36 case LLVMCodeModelKernel:
|
|
37 return CodeModel::Kernel;
|
|
38 case LLVMCodeModelMedium:
|
|
39 return CodeModel::Medium;
|
|
40 case LLVMCodeModelLarge:
|
|
41 return CodeModel::Large;
|
|
42 }
|
121
|
43 return CodeModel::Small;
|
120
|
44 }
|
|
45
|
|
46 inline LLVMCodeModel wrap(CodeModel::Model Model) {
|
|
47 switch (Model) {
|
|
48 case CodeModel::Small:
|
|
49 return LLVMCodeModelSmall;
|
|
50 case CodeModel::Kernel:
|
|
51 return LLVMCodeModelKernel;
|
|
52 case CodeModel::Medium:
|
|
53 return LLVMCodeModelMedium;
|
|
54 case CodeModel::Large:
|
|
55 return LLVMCodeModelLarge;
|
|
56 }
|
|
57 llvm_unreachable("Bad CodeModel!");
|
|
58 }
|
|
59
|
|
60 } // end llvm namespace
|
|
61
|
|
62 #endif
|