| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- //===- llvm/Target/CodeGenCWrappers.h - CodeGen C Wrappers ------*- C++ -*-===//
- //
- // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
- // See https://llvm.org/LICENSE.txt for license information.
- // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
- //
- //===----------------------------------------------------------------------===//
- //
- // This file defines C bindings wrappers for enums in llvm/Support/CodeGen.h
- // that need them. The wrappers are separated to avoid adding an indirect
- // dependency on llvm/Config/Targets.def to CodeGen.h.
- //
- //===----------------------------------------------------------------------===//
- #ifndef LLVM_TARGET_CODEGENCWRAPPERS_H
- #define LLVM_TARGET_CODEGENCWRAPPERS_H
- #include "llvm-c/TargetMachine.h"
- #include "llvm/ADT/Optional.h"
- #include "llvm/Support/CodeGen.h"
- #include "llvm/Support/ErrorHandling.h"
- namespace llvm {
- inline Optional<CodeModel::Model> unwrap(LLVMCodeModel Model, bool &JIT) {
- JIT = false;
- switch (Model) {
- case LLVMCodeModelJITDefault:
- JIT = true;
- LLVM_FALLTHROUGH;
- case LLVMCodeModelDefault:
- return None;
- case LLVMCodeModelTiny:
- return CodeModel::Tiny;
- case LLVMCodeModelSmall:
- return CodeModel::Small;
- case LLVMCodeModelKernel:
- return CodeModel::Kernel;
- case LLVMCodeModelMedium:
- return CodeModel::Medium;
- case LLVMCodeModelLarge:
- return CodeModel::Large;
- }
- return CodeModel::Small;
- }
- inline LLVMCodeModel wrap(CodeModel::Model Model) {
- switch (Model) {
- case CodeModel::Tiny:
- return LLVMCodeModelTiny;
- case CodeModel::Small:
- return LLVMCodeModelSmall;
- case CodeModel::Kernel:
- return LLVMCodeModelKernel;
- case CodeModel::Medium:
- return LLVMCodeModelMedium;
- case CodeModel::Large:
- return LLVMCodeModelLarge;
- }
- llvm_unreachable("Bad CodeModel!");
- }
- } // namespace llvm
- #endif
|