LLVM  8.0.1
CodeGen.h
Go to the documentation of this file.
1 //===-- llvm/Support/CodeGen.h - CodeGen Concepts ---------------*- C++ -*-===//
2 //
3 // The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 //
10 // This file define some types which define code generation concepts. For
11 // example, relocation model.
12 //
13 //===----------------------------------------------------------------------===//
14 
15 #ifndef LLVM_SUPPORT_CODEGEN_H
16 #define LLVM_SUPPORT_CODEGEN_H
17 
18 namespace llvm {
19 
20  // Relocation model types.
21  namespace Reloc {
23  }
24 
25  // Code model types.
26  namespace CodeModel {
27  // Sync changes with CodeGenCWrappers.h.
29  }
30 
31  namespace PICLevel {
32  // This is used to map -fpic/-fPIC.
33  enum Level { NotPIC=0, SmallPIC=1, BigPIC=2 };
34  }
35 
36  namespace PIELevel {
37  enum Level { Default=0, Small=1, Large=2 };
38  }
39 
40  // TLS models.
41  namespace TLSModel {
42  enum Model {
47  };
48  }
49 
50  // Code generation optimization level.
51  namespace CodeGenOpt {
52  enum Level {
53  None, // -O0
54  Less, // -O1
55  Default, // -O2, -Os
56  Aggressive // -O3
57  };
58  }
59 
60  // Specify effect of frame pointer elimination optimization.
61  namespace FramePointer {
62  enum FP {All, NonLeaf, None};
63  }
64 
65 } // end llvm namespace
66 
67 #endif
const NoneType None
Definition: None.h:24
This class represents lattice values for constants.
Definition: AllocatorList.h:24
static cl::opt< bool > Aggressive("aggressive-ext-opt", cl::Hidden, cl::desc("Aggressive extension optimization"))