LLVM  15.0.0git
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
llvm
This is an optimization pass for GlobalISel generic memory operations.
Definition: AddressRanges.h:17
Optional.h
llvm::CodeModel::Medium
@ Medium
Definition: CodeGen.h:28
ErrorHandling.h
LLVMCodeModelDefault
@ LLVMCodeModelDefault
Definition: TargetMachine.h:55
llvm::Optional< CodeModel::Model >
llvm::CodeModel::Kernel
@ Kernel
Definition: CodeGen.h:28
llvm::Reloc::Model
Model
Definition: CodeGen.h:22
llvm::CodeModel::Small
@ Small
Definition: CodeGen.h:28
llvm::unwrap
Attribute unwrap(LLVMAttributeRef Attr)
Definition: Attributes.h:280
llvm::None
const NoneType None
Definition: None.h:24
LLVMCodeModel
LLVMCodeModel
Definition: TargetMachine.h:54
llvm::CodeModel::Model
Model
Definition: CodeGen.h:28
llvm::EngineKind::JIT
@ JIT
Definition: ExecutionEngine.h:524
LLVMCodeModelSmall
@ LLVMCodeModelSmall
Definition: TargetMachine.h:58
LLVMCodeModelLarge
@ LLVMCodeModelLarge
Definition: TargetMachine.h:61
LLVMCodeModelMedium
@ LLVMCodeModelMedium
Definition: TargetMachine.h:60
llvm::wrap
LLVMAttributeRef wrap(Attribute Attr)
Definition: Attributes.h:275
llvm_unreachable
#define llvm_unreachable(msg)
Marks that the current location is not supposed to be reachable.
Definition: ErrorHandling.h:143
LLVM_FALLTHROUGH
#define LLVM_FALLTHROUGH
LLVM_FALLTHROUGH - Mark fallthrough cases in switch statements.
Definition: Compiler.h:280
llvm::CodeModel::Tiny
@ Tiny
Definition: CodeGen.h:28
LLVMCodeModelJITDefault
@ LLVMCodeModelJITDefault
Definition: TargetMachine.h:56
TargetMachine.h
LLVMCodeModelKernel
@ LLVMCodeModelKernel
Definition: TargetMachine.h:59
CodeGen.h
llvm::CodeModel::Large
@ Large
Definition: CodeGen.h:28
LLVMCodeModelTiny
@ LLVMCodeModelTiny
Definition: TargetMachine.h:57