LLVM  8.0.0svn
CodeGenCWrappers.h
Go to the documentation of this file.
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"
23 
24 namespace llvm {
25 
27  JIT = false;
28  switch (Model) {
30  JIT = true;
33  return None;
34  case LLVMCodeModelTiny:
35  return CodeModel::Tiny;
36  case LLVMCodeModelSmall:
37  return CodeModel::Small;
39  return CodeModel::Kernel;
41  return CodeModel::Medium;
42  case LLVMCodeModelLarge:
43  return CodeModel::Large;
44  }
45  return CodeModel::Small;
46 }
47 
49  switch (Model) {
50  case CodeModel::Tiny:
51  return LLVMCodeModelTiny;
52  case CodeModel::Small:
53  return LLVMCodeModelSmall;
54  case CodeModel::Kernel:
55  return LLVMCodeModelKernel;
56  case CodeModel::Medium:
57  return LLVMCodeModelMedium;
58  case CodeModel::Large:
59  return LLVMCodeModelLarge;
60  }
61  llvm_unreachable("Bad CodeModel!");
62 }
63 } // namespace llvm
64 
65 #endif
const NoneType None
Definition: None.h:24
Compute iterated dominance frontiers using a linear time algorithm.
Definition: AllocatorList.h:24
#define LLVM_FALLTHROUGH
Definition: Compiler.h:86
Attribute unwrap(LLVMAttributeRef Attr)
Definition: Attributes.h:195
LLVMCodeModel
Definition: TargetMachine.h:45
#define llvm_unreachable(msg)
Marks that the current location is not supposed to be reachable.
LLVMAttributeRef wrap(Attribute Attr)
Definition: Attributes.h:190