mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-19 19:12:56 +02:00
f2011a3ae7
IMHO it is an antipattern to have a enum value that is Default. At any given piece of code it is not clear if we have to handle Default or if has already been mapped to a concrete value. In this case in particular, only the target can do the mapping and it is nice to make sure it is always done. This deletes the two default enum values of CodeModel and uses an explicit Optional<CodeModel> when it is possible that it is unspecified. llvm-svn: 309911
63 lines
1.4 KiB
C++
63 lines
1.4 KiB
C++
//===-- llvm/Support/CodeGen.h - CodeGen Concepts ---------------*- C++ -*-===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// 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 {
|
|
enum Model { Static, PIC_, DynamicNoPIC, ROPI, RWPI, ROPI_RWPI };
|
|
}
|
|
|
|
// Code model types.
|
|
namespace CodeModel {
|
|
// Sync changes with CodeGenCWrappers.h.
|
|
enum Model { 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, // -O0
|
|
Less, // -O1
|
|
Default, // -O2, -Os
|
|
Aggressive // -O3
|
|
};
|
|
}
|
|
|
|
} // end llvm namespace
|
|
|
|
#endif
|