aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/libs/llvm12/include/llvm/Support/CodeGen.h
blob: a3db049dc68d658318b9e1e2d7a7de6913d88f7f (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#pragma once 
 
#ifdef __GNUC__ 
#pragma GCC diagnostic push 
#pragma GCC diagnostic ignored "-Wunused-parameter" 
#endif 
 
//===-- 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 effect of frame pointer elimination optimization. 
  namespace FramePointer { 
    enum FP {All, NonLeaf, None}; 
  } 
 
}  // end llvm namespace 
 
#endif 
 
#ifdef __GNUC__ 
#pragma GCC diagnostic pop 
#endif