LLVM
20.0.0git
include
llvm
Target
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/Support/CodeGen.h
"
20
#include "
llvm/Support/ErrorHandling.h
"
21
#include <optional>
22
23
namespace
llvm
{
24
25
inline
std::optional<CodeModel::Model>
unwrap
(
LLVMCodeModel
Model,
bool
&JIT) {
26
JIT =
false
;
27
switch
(Model) {
28
case
LLVMCodeModelJITDefault
:
29
JIT =
true
;
30
[[fallthrough]];
31
case
LLVMCodeModelDefault
:
32
return
std::nullopt;
33
case
LLVMCodeModelTiny
:
34
return
CodeModel::Tiny
;
35
case
LLVMCodeModelSmall
:
36
return
CodeModel::Small
;
37
case
LLVMCodeModelKernel
:
38
return
CodeModel::Kernel
;
39
case
LLVMCodeModelMedium
:
40
return
CodeModel::Medium
;
41
case
LLVMCodeModelLarge
:
42
return
CodeModel::Large
;
43
}
44
return
CodeModel::Small
;
45
}
46
47
inline
LLVMCodeModel
wrap
(
CodeModel::Model
Model) {
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
CodeGen.h
LLVMCodeModel
LLVMCodeModel
Definition:
TargetMachine.h:55
LLVMCodeModelKernel
@ LLVMCodeModelKernel
Definition:
TargetMachine.h:60
LLVMCodeModelTiny
@ LLVMCodeModelTiny
Definition:
TargetMachine.h:58
LLVMCodeModelSmall
@ LLVMCodeModelSmall
Definition:
TargetMachine.h:59
LLVMCodeModelMedium
@ LLVMCodeModelMedium
Definition:
TargetMachine.h:61
LLVMCodeModelJITDefault
@ LLVMCodeModelJITDefault
Definition:
TargetMachine.h:57
LLVMCodeModelDefault
@ LLVMCodeModelDefault
Definition:
TargetMachine.h:56
LLVMCodeModelLarge
@ LLVMCodeModelLarge
Definition:
TargetMachine.h:62
TargetMachine.h
ErrorHandling.h
llvm_unreachable
#define llvm_unreachable(msg)
Marks that the current location is not supposed to be reachable.
Definition:
ErrorHandling.h:143
llvm::CodeModel::Model
Model
Definition:
CodeGen.h:31
llvm::CodeModel::Medium
@ Medium
Definition:
CodeGen.h:31
llvm::CodeModel::Large
@ Large
Definition:
CodeGen.h:31
llvm::CodeModel::Tiny
@ Tiny
Definition:
CodeGen.h:31
llvm::CodeModel::Small
@ Small
Definition:
CodeGen.h:31
llvm::CodeModel::Kernel
@ Kernel
Definition:
CodeGen.h:31
llvm
This is an optimization pass for GlobalISel generic memory operations.
Definition:
AddressRanges.h:18
llvm::unwrap
Attribute unwrap(LLVMAttributeRef Attr)
Definition:
Attributes.h:332
llvm::wrap
LLVMAttributeRef wrap(Attribute Attr)
Definition:
Attributes.h:327
Generated on Sat Dec 21 2024 21:12:55 for LLVM by
1.9.6