| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- //===-- llvm/Support/CodeGen.h - CodeGen Concepts ---------------*- 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 define some types which define code generation concepts. For
- // example, relocation model.
- //
- //===----------------------------------------------------------------------===//
- #ifndef LLVM_SUPPORT_CODEGEN_H
- #define LLVM_SUPPORT_CODEGEN_H
- namespace llvm {
- // Relocation model types.
- namespace Reloc {
- // Cannot be named PIC due to collision with -DPIC
- enum Model { Static, PIC_, DynamicNoPIC, ROPI, RWPI, ROPI_RWPI };
- }
- // Code model types.
- namespace CodeModel {
- // Sync changes with CodeGenCWrappers.h.
- enum Model { Tiny, Small, Kernel, Medium, Large };
- }
- namespace PICLevel {
- // This is used to map -fpic/-fPIC.
- enum Level { NotPIC=0, SmallPIC=1, BigPIC=2 };
- }
- namespace PIELevel {
- enum Level { Default=0, Small=1, Large=2 };
- }
- // TLS models.
- namespace TLSModel {
- enum Model {
- GeneralDynamic,
- LocalDynamic,
- InitialExec,
- LocalExec
- };
- }
- // Code generation optimization level.
- namespace CodeGenOpt {
- enum Level {
- None = 0, // -O0
- Less = 1, // -O1
- Default = 2, // -O2, -Os
- Aggressive = 3 // -O3
- };
- }
- /// These enums are meant to be passed into addPassesToEmitFile to indicate
- /// what type of file to emit, and returned by it to indicate what type of
- /// file could actually be made.
- enum CodeGenFileType {
- CGFT_AssemblyFile,
- CGFT_ObjectFile,
- CGFT_Null // Do not emit any output.
- };
- // Specify what functions should keep the frame pointer.
- enum class FramePointerKind { None, NonLeaf, All };
- } // end llvm namespace
- #endif
|