]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm/include/llvm/Target/CodeGenCWrappers.h
MFC r343918: Teach /etc/rc.d/growfs how to handle systems running ZFS.
[FreeBSD/FreeBSD.git] / contrib / llvm / include / llvm / Target / CodeGenCWrappers.h
1 //===- llvm/Target/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_TARGET_CODEGENCWRAPPERS_H
17 #define LLVM_TARGET_CODEGENCWRAPPERS_H
18
19 #include "llvm-c/TargetMachine.h"
20 #include "llvm/ADT/Optional.h"
21 #include "llvm/Support/CodeGen.h"
22 #include "llvm/Support/ErrorHandling.h"
23
24 namespace llvm {
25
26 inline Optional<CodeModel::Model> unwrap(LLVMCodeModel Model, bool &JIT) {
27   JIT = false;
28   switch (Model) {
29   case LLVMCodeModelJITDefault:
30     JIT = true;
31     LLVM_FALLTHROUGH;
32   case LLVMCodeModelDefault:
33     return None;
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   }
43   return CodeModel::Small;
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 } // namespace llvm
60
61 #endif