LLVM  9.0.0svn
CodeGenCWrappers.h
Go to the documentation of this file.
1 //===- llvm/Target/CodeGenCWrappers.h - CodeGen C Wrappers ------*- C++ -*-===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 //
9 // This file defines C bindings wrappers for enums in llvm/Support/CodeGen.h
10 // that need them. The wrappers are separated to avoid adding an indirect
11 // dependency on llvm/Config/Targets.def to CodeGen.h.
12 //
13 //===----------------------------------------------------------------------===//
14 
15 #ifndef LLVM_TARGET_CODEGENCWRAPPERS_H
16 #define LLVM_TARGET_CODEGENCWRAPPERS_H
17 
18 #include "llvm-c/TargetMachine.h"
19 #include "llvm/ADT/Optional.h"
20 #include "llvm/Support/CodeGen.h"
22 
23 namespace llvm {
24 
26  JIT = false;
27  switch (Model) {
29  JIT = true;
32  return None;
33  case LLVMCodeModelTiny:
34  return CodeModel::Tiny;
35  case LLVMCodeModelSmall:
36  return CodeModel::Small;
38  return CodeModel::Kernel;
40  return CodeModel::Medium;
41  case LLVMCodeModelLarge:
42  return CodeModel::Large;
43  }
44  return CodeModel::Small;
45 }
46 
48  switch (Model) {
49  case CodeModel::Tiny:
50  return LLVMCodeModelTiny;
51  case CodeModel::Small:
52  return LLVMCodeModelSmall;
53  case CodeModel::Kernel:
54  return LLVMCodeModelKernel;
55  case CodeModel::Medium:
56  return LLVMCodeModelMedium;
57  case CodeModel::Large:
58  return LLVMCodeModelLarge;
59  }
60  llvm_unreachable("Bad CodeModel!");
61 }
62 } // namespace llvm
63 
64 #endif
const NoneType None
Definition: None.h:23
This class represents lattice values for constants.
Definition: AllocatorList.h:23
Attribute unwrap(LLVMAttributeRef Attr)
Definition: Attributes.h:194
LLVMCodeModel
Definition: TargetMachine.h:48
#define llvm_unreachable(msg)
Marks that the current location is not supposed to be reachable.
LLVMAttributeRef wrap(Attribute Attr)
Definition: Attributes.h:189
#define LLVM_FALLTHROUGH
LLVM_FALLTHROUGH - Mark fallthrough cases in switch statements.
Definition: Compiler.h:250