mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-02-01 05:01:59 +01:00
[llvm-exegesis] Improve error reporting in Target.cpp
Followup to D74085. Replace the use of `report_fatal_error()` with returning the error to `llvm-exegesis.cpp` and handling it there. Differential Revision: https://reviews.llvm.org/D74113
This commit is contained in:
parent
c02e81a2ad
commit
1896e03d2c
@ -53,7 +53,7 @@ std::unique_ptr<SnippetGenerator> ExegesisTarget::createSnippetGenerator(
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
std::unique_ptr<BenchmarkRunner>
|
||||
Expected<std::unique_ptr<BenchmarkRunner>>
|
||||
ExegesisTarget::createBenchmarkRunner(InstructionBenchmark::ModeE Mode,
|
||||
const LLVMState &State) const {
|
||||
PfmCountersInfo PfmCounters = State.getPfmCounters();
|
||||
@ -66,14 +66,16 @@ ExegesisTarget::createBenchmarkRunner(InstructionBenchmark::ModeE Mode,
|
||||
const char *ModeName = Mode == InstructionBenchmark::Latency
|
||||
? "latency"
|
||||
: "inverse_throughput";
|
||||
report_fatal_error(Twine("can't run '").concat(ModeName).concat("' mode, "
|
||||
"sched model does not define a cycle counter."));
|
||||
return make_error<Failure>(
|
||||
Twine("can't run '")
|
||||
.concat(ModeName)
|
||||
.concat("' mode, sched model does not define a cycle counter."));
|
||||
}
|
||||
return createLatencyBenchmarkRunner(State, Mode);
|
||||
case InstructionBenchmark::Uops:
|
||||
if (!PfmCounters.UopsCounter && !PfmCounters.IssueCounters)
|
||||
report_fatal_error("can't run 'uops' mode, sched model does not define "
|
||||
"uops or issue counters.");
|
||||
return make_error<Failure>("can't run 'uops' mode, sched model does not "
|
||||
"define uops or issue counters.");
|
||||
return createUopsBenchmarkRunner(State);
|
||||
}
|
||||
return nullptr;
|
||||
|
@ -132,7 +132,7 @@ public:
|
||||
const LLVMState &State,
|
||||
const SnippetGenerator::Options &Opts) const;
|
||||
// Creates a benchmark runner for the given mode.
|
||||
std::unique_ptr<BenchmarkRunner>
|
||||
Expected<std::unique_ptr<BenchmarkRunner>>
|
||||
createBenchmarkRunner(InstructionBenchmark::ModeE Mode,
|
||||
const LLVMState &State) const;
|
||||
|
||||
|
@ -263,8 +263,8 @@ void benchmarkMain() {
|
||||
|
||||
const LLVMState State(CpuName);
|
||||
|
||||
const std::unique_ptr<BenchmarkRunner> Runner =
|
||||
State.getExegesisTarget().createBenchmarkRunner(BenchmarkMode, State);
|
||||
const std::unique_ptr<BenchmarkRunner> Runner = ExitOnErr(
|
||||
State.getExegesisTarget().createBenchmarkRunner(BenchmarkMode, State));
|
||||
if (!Runner) {
|
||||
ExitWithError("cannot create benchmark runner");
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user