Commit 5c05b4a2 authored by Lang Hames's avatar Lang Hames
Browse files

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

Also remove redundant feature initialization steps from the detectHost method.
parent 902dc6c6
Loading
Loading
Loading
Loading
+17 −0
Original line number Diff line number Diff line
@@ -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; }

+1 −3
Original line number Diff line number Diff line
@@ -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;
}