CodeGen.h revision 234353
1226584Sdim//===-- llvm/Support/CodeGen.h - CodeGen Concepts ---------------*- C++ -*-===//
2226584Sdim//
3226584Sdim//                     The LLVM Compiler Infrastructure
4226584Sdim//
5226584Sdim// This file is distributed under the University of Illinois Open Source
6226584Sdim// License. See LICENSE.TXT for details.
7226584Sdim//
8226584Sdim//===----------------------------------------------------------------------===//
9226584Sdim//
10226584Sdim// This file define some types which define code generation concepts. For
11226584Sdim// example, relocation model.
12226584Sdim//
13226584Sdim//===----------------------------------------------------------------------===//
14226584Sdim
15226584Sdim#ifndef LLVM_SUPPORT_CODEGEN_H
16226584Sdim#define LLVM_SUPPORT_CODEGEN_H
17226584Sdim
18226584Sdimnamespace llvm {
19226584Sdim
20226584Sdim  // Relocation model types.
21226584Sdim  namespace Reloc {
22226584Sdim    enum Model { Default, Static, PIC_, DynamicNoPIC };
23226584Sdim  }
24226584Sdim
25226584Sdim  // Code model types.
26226584Sdim  namespace CodeModel {
27226584Sdim    enum Model { Default, JITDefault, Small, Kernel, Medium, Large };
28226584Sdim  }
29226584Sdim
30234353Sdim  // TLS models.
31234353Sdim  namespace TLSModel {
32234353Sdim    enum Model {
33234353Sdim      GeneralDynamic,
34234353Sdim      LocalDynamic,
35234353Sdim      InitialExec,
36234353Sdim      LocalExec
37234353Sdim    };
38234353Sdim  }
39234353Sdim
40234353Sdim  // Code generation optimization level.
41234353Sdim  namespace CodeGenOpt {
42234353Sdim    enum Level {
43234353Sdim      None,        // -O0
44234353Sdim      Less,        // -O1
45234353Sdim      Default,     // -O2, -Os
46234353Sdim      Aggressive   // -O3
47234353Sdim    };
48234353Sdim  }
49234353Sdim
50226584Sdim}  // end llvm namespace
51226584Sdim
52226584Sdim#endif
53