summaryrefslogtreecommitdiff
path: root/llvm/lib/Target/Lanai
diff options
context:
space:
mode:
authorRafael Espindola <rafael.espindola@gmail.com>2017-08-03 02:16:21 +0000
committerRafael Espindola <rafael.espindola@gmail.com>2017-08-03 02:16:21 +0000
commit5504e9726bfa480046083fb555c2dd7895e51be8 (patch)
tree6aca4b1db043b875e59920c72464c668bc570f91 /llvm/lib/Target/Lanai
parentc9a4d78c983e99b89edbb3b9e9f3b410419181d2 (diff)
Delete Default and JITDefault code models
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.
Diffstat (limited to 'llvm/lib/Target/Lanai')
-rw-r--r--llvm/lib/Target/Lanai/LanaiTargetMachine.cpp16
-rw-r--r--llvm/lib/Target/Lanai/LanaiTargetMachine.h3
2 files changed, 14 insertions, 5 deletions
diff --git a/llvm/lib/Target/Lanai/LanaiTargetMachine.cpp b/llvm/lib/Target/Lanai/LanaiTargetMachine.cpp
index a2f005ce445..9a73c95d651 100644
--- a/llvm/lib/Target/Lanai/LanaiTargetMachine.cpp
+++ b/llvm/lib/Target/Lanai/LanaiTargetMachine.cpp
@@ -53,15 +53,23 @@ static Reloc::Model getEffectiveRelocModel(Optional<Reloc::Model> RM) {
return *RM;
}
+static CodeModel::Model getEffectiveCodeModel(Optional<CodeModel::Model> CM) {
+ if (CM)
+ return *CM;
+ return CodeModel::Medium;
+}
+
LanaiTargetMachine::LanaiTargetMachine(const Target &T, const Triple &TT,
StringRef Cpu, StringRef FeatureString,
const TargetOptions &Options,
Optional<Reloc::Model> RM,
- CodeModel::Model CodeModel,
- CodeGenOpt::Level OptLevel)
+ Optional<CodeModel::Model> CodeModel,
+ CodeGenOpt::Level OptLevel, bool JIT)
: LLVMTargetMachine(T, computeDataLayout(), TT, Cpu, FeatureString, Options,
- getEffectiveRelocModel(RM), CodeModel, OptLevel),
- Subtarget(TT, Cpu, FeatureString, *this, Options, CodeModel, OptLevel),
+ getEffectiveRelocModel(RM),
+ getEffectiveCodeModel(CodeModel), OptLevel),
+ Subtarget(TT, Cpu, FeatureString, *this, Options, getCodeModel(),
+ OptLevel),
TLOF(new LanaiTargetObjectFile()) {
initAsmInfo();
}
diff --git a/llvm/lib/Target/Lanai/LanaiTargetMachine.h b/llvm/lib/Target/Lanai/LanaiTargetMachine.h
index 083ba6fdf84..ce1271d9dea 100644
--- a/llvm/lib/Target/Lanai/LanaiTargetMachine.h
+++ b/llvm/lib/Target/Lanai/LanaiTargetMachine.h
@@ -34,7 +34,8 @@ public:
StringRef Cpu, StringRef FeatureString,
const TargetOptions &Options,
Optional<Reloc::Model> RelocationModel,
- CodeModel::Model CodeModel, CodeGenOpt::Level OptLevel);
+ Optional<CodeModel::Model> CodeModel,
+ CodeGenOpt::Level OptLevel, bool JIT);
const LanaiSubtarget *
getSubtargetImpl(const llvm::Function & /*Fn*/) const override {