#ifndef LLVM_MC_MCCODEGENINFO_H
#define LLVM_MC_MCCODEGENINFO_H
+#include "llvm/Support/CodeGen.h"
+
namespace llvm {
- // Relocation model types.
- namespace Reloc {
- enum Model { Default, Static, PIC_, DynamicNoPIC };
- }
- class MCCodeGenInfo {
- /// RelocationModel - Relocation model: statcic, pic, etc.
- ///
- Reloc::Model RelocationModel;
+class MCCodeGenInfo {
+ /// RelocationModel - Relocation model: static, pic, etc.
+ ///
+ Reloc::Model RelocationModel;
+
+ /// CMModel - Code model.
+ ///
+ CodeModel::Model CMModel;
+
+ /// OptLevel - Optimization level.
+ ///
+ CodeGenOpt::Level OptLevel;
+
+public:
+ void initMCCodeGenInfo(Reloc::Model RM = Reloc::Default,
+ CodeModel::Model CM = CodeModel::Default,
+ CodeGenOpt::Level OL = CodeGenOpt::Default);
+
+ Reloc::Model getRelocationModel() const { return RelocationModel; }
+
+ CodeModel::Model getCodeModel() const { return CMModel; }
- public:
- void InitMCCodeGenInfo(Reloc::Model RM = Reloc::Default);
+ CodeGenOpt::Level getOptLevel() const { return OptLevel; }
- Reloc::Model getRelocationModel() const { return RelocationModel; }
- };
+ // Allow overriding OptLevel on a per-function basis.
+ void setOptLevel(CodeGenOpt::Level Level) { OptLevel = Level; }
+};
} // namespace llvm
#endif