LLVM
8.0.1
include
llvm
Target
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
"
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
LLVMCodeModelTiny
:
35
return
CodeModel::Tiny
;
36
case
LLVMCodeModelSmall
:
37
return
CodeModel::Small
;
38
case
LLVMCodeModelKernel
:
39
return
CodeModel::Kernel
;
40
case
LLVMCodeModelMedium
:
41
return
CodeModel::Medium
;
42
case
LLVMCodeModelLarge
:
43
return
CodeModel::Large
;
44
}
45
return
CodeModel::Small
;
46
}
47
48
inline
LLVMCodeModel
wrap
(
CodeModel::Model
Model
) {
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
llvm::None
const NoneType None
Definition:
None.h:24
llvm::CodeModel::Model
Model
Definition:
CodeGen.h:28
LLVMCodeModelMedium
Definition:
TargetMachine.h:54
llvm
This class represents lattice values for constants.
Definition:
AllocatorList.h:24
llvm::CodeModel::Small
Definition:
CodeGen.h:28
LLVM_FALLTHROUGH
#define LLVM_FALLTHROUGH
Definition:
Compiler.h:86
llvm::Reloc::Model
Model
Definition:
CodeGen.h:22
LLVMCodeModelKernel
Definition:
TargetMachine.h:53
llvm::Optional< CodeModel::Model >
llvm::unwrap
Attribute unwrap(LLVMAttributeRef Attr)
Definition:
Attributes.h:195
TargetMachine.h
llvm::CodeModel::Medium
Definition:
CodeGen.h:28
CodeGen.h
llvm::EngineKind::JIT
Definition:
ExecutionEngine.h:516
LLVMCodeModel
LLVMCodeModel
Definition:
TargetMachine.h:48
llvm::CodeModel::Tiny
Definition:
CodeGen.h:28
LLVMCodeModelJITDefault
Definition:
TargetMachine.h:50
llvm::CodeModel::Kernel
Definition:
CodeGen.h:28
llvm_unreachable
#define llvm_unreachable(msg)
Marks that the current location is not supposed to be reachable.
Definition:
ErrorHandling.h:136
ErrorHandling.h
llvm::wrap
LLVMAttributeRef wrap(Attribute Attr)
Definition:
Attributes.h:190
LLVMCodeModelDefault
Definition:
TargetMachine.h:49
LLVMCodeModelSmall
Definition:
TargetMachine.h:52
LLVMCodeModelTiny
Definition:
TargetMachine.h:51
LLVMCodeModelLarge
Definition:
TargetMachine.h:55
Optional.h
llvm::CodeModel::Large
Definition:
CodeGen.h:28
Generated on Sun Dec 20 2020 13:53:38 for LLVM by
1.8.13