[Orc] Add setters for target options and features to JITTargetMachineBuilder.

Also remove redundant feature initialization steps from the detectHost method.
This commit is contained in:
Lang Hames
2019-12-02 01:52:51 -08:00
parent 902dc6c69c
commit 5c05b4a279
2 changed files with 18 additions and 3 deletions
@@ -91,6 +91,12 @@ public:
return *this;
}
/// Set subtarget features.
JITTargetMachineBuilder &setFeatures(StringRef FeatureString) {
Features = SubtargetFeatures(FeatureString);
return *this;
}
/// Add subtarget features.
JITTargetMachineBuilder &
addFeatures(const std::vector<std::string> &FeatureVec);
@@ -101,6 +107,17 @@ public:
/// Access subtarget features.
const SubtargetFeatures &getFeatures() const { return Features; }
/// Set TargetOptions.
///
/// Note: This operation will overwrite any previously configured options,
/// including EmulatedTLS and ExplicitEmulatedTLS which
/// the JITTargetMachineBuilder sets by default. Clients are responsible
/// for re-enabling these overwritten options.
JITTargetMachineBuilder &setOptions(TargetOptions Options) {
this->Options = std::move(Options);
return *this;
}
/// Access TargetOptions.
TargetOptions &getOptions() { return Options; }
@@ -28,14 +28,12 @@ Expected<JITTargetMachineBuilder> JITTargetMachineBuilder::detectHost() {
// Retrieve host CPU name and sub-target features and add them to builder.
// Relocation model, code model and codegen opt level are kept to default
// values.
llvm::SubtargetFeatures SubtargetFeatures;
llvm::StringMap<bool> FeatureMap;
llvm::sys::getHostCPUFeatures(FeatureMap);
for (auto &Feature : FeatureMap)
SubtargetFeatures.AddFeature(Feature.first(), Feature.second);
TMBuilder.getFeatures().AddFeature(Feature.first(), Feature.second);
TMBuilder.setCPU(llvm::sys::getHostCPUName());
TMBuilder.addFeatures(SubtargetFeatures.getFeatures());
return TMBuilder;
}