llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-tools-llvm-exegesis Author: Aiden Grossman (boomanaiden154) <details> <summary>Changes</summary> This patch adjust the runConfiguration function to allow passing a parameter to force returning SnippetCrashes as errors rather than serializing them as strings in the returned Benchmark object. In addition, this patch adds a getter for the signal information address in the SnippetCrash object. These are both needed to allow for downstream consumption of the exegesis library within Gematria. --- Full diff: https://github.com/llvm/llvm-project/pull/74211.diff 3 Files Affected: - (modified) llvm/tools/llvm-exegesis/lib/BenchmarkRunner.cpp (+4-3) - (modified) llvm/tools/llvm-exegesis/lib/BenchmarkRunner.h (+3-3) - (modified) llvm/tools/llvm-exegesis/lib/Error.h (+2) ``````````diff diff --git a/llvm/tools/llvm-exegesis/lib/BenchmarkRunner.cpp b/llvm/tools/llvm-exegesis/lib/BenchmarkRunner.cpp index f5d73a8bd6a3..51c9c6cd0935 100644 --- a/llvm/tools/llvm-exegesis/lib/BenchmarkRunner.cpp +++ b/llvm/tools/llvm-exegesis/lib/BenchmarkRunner.cpp @@ -545,9 +545,10 @@ BenchmarkRunner::createFunctionExecutor( llvm_unreachable("ExecutionMode is outside expected range"); } -Expected<Benchmark> BenchmarkRunner::runConfiguration( - RunnableConfiguration &&RC, - const std::optional<StringRef> &DumpFile) const { +Expected<Benchmark> +BenchmarkRunner::runConfiguration(RunnableConfiguration &&RC, + const std::optional<StringRef> &DumpFile, + bool ErrorOnSnippetCrash /*= false*/) const { Benchmark &InstrBenchmark = RC.InstrBenchmark; object::OwningBinary<object::ObjectFile> &ObjectFile = RC.ObjectFile; diff --git a/llvm/tools/llvm-exegesis/lib/BenchmarkRunner.h b/llvm/tools/llvm-exegesis/lib/BenchmarkRunner.h index 24f208628940..eb8c9f55722c 100644 --- a/llvm/tools/llvm-exegesis/lib/BenchmarkRunner.h +++ b/llvm/tools/llvm-exegesis/lib/BenchmarkRunner.h @@ -65,9 +65,9 @@ class BenchmarkRunner { unsigned NumRepetitions, unsigned LoopUnrollFactor, const SnippetRepetitor &Repetitor) const; - Expected<Benchmark> - runConfiguration(RunnableConfiguration &&RC, - const std::optional<StringRef> &DumpFile) const; + Expected<Benchmark> runConfiguration(RunnableConfiguration &&RC, + const std::optional<StringRef> &DumpFile, + bool ErrorOnSnippetCrash = false) const; // Scratch space to run instructions that touch memory. struct ScratchSpace { diff --git a/llvm/tools/llvm-exegesis/lib/Error.h b/llvm/tools/llvm-exegesis/lib/Error.h index 8d3f394ed8d6..8c95439d63ac 100644 --- a/llvm/tools/llvm-exegesis/lib/Error.h +++ b/llvm/tools/llvm-exegesis/lib/Error.h @@ -52,6 +52,8 @@ class SnippetCrash : public ErrorInfo<SnippetCrash> { std::error_code convertToErrorCode() const override; + intptr_t GetCrashAddress() const { return SIAddress; } + private: std::string Msg; intptr_t SIAddress; `````````` </details> https://github.com/llvm/llvm-project/pull/74211 _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits