MCCodeGenInfo.h 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. //===-- llvm/MC/MCCodeGenInfo.h - Target CodeGen Info -----------*- 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 tracks information about the target which can affect codegen,
  11. // asm parsing, and asm printing. For example, relocation model.
  12. //
  13. //===----------------------------------------------------------------------===//
  14. #ifndef LLVM_MC_MCCODEGENINFO_H
  15. #define LLVM_MC_MCCODEGENINFO_H
  16. #include "llvm/Support/CodeGen.h"
  17. namespace llvm {
  18. class MCCodeGenInfo {
  19. /// RelocationModel - Relocation model: static, pic, etc.
  20. ///
  21. Reloc::Model RelocationModel;
  22. /// CMModel - Code model.
  23. ///
  24. CodeModel::Model CMModel;
  25. /// OptLevel - Optimization level.
  26. ///
  27. CodeGenOpt::Level OptLevel;
  28. public:
  29. void initMCCodeGenInfo(Reloc::Model RM = Reloc::Default,
  30. CodeModel::Model CM = CodeModel::Default,
  31. CodeGenOpt::Level OL = CodeGenOpt::Default);
  32. Reloc::Model getRelocationModel() const { return RelocationModel; }
  33. CodeModel::Model getCodeModel() const { return CMModel; }
  34. CodeGenOpt::Level getOptLevel() const { return OptLevel; }
  35. // Allow overriding OptLevel on a per-function basis.
  36. void setOptLevel(CodeGenOpt::Level Level) { OptLevel = Level; }
  37. };
  38. } // namespace llvm
  39. #endif