From d094f3c3c5c447e2241f6d8b7e7379fc01865aeb Mon Sep 17 00:00:00 2001 From: Roman Lebedev Date: Sun, 4 Apr 2021 15:56:43 +0300 Subject: [PATCH] [llvm-exegesis] SnippetFile: do create source manager in MCContext This way, once there's an error in the snippet file (like in the test), llvm-exegesis won't crash with an assertion failure, but print a nice diagnostic about the problem. --- llvm/test/tools/llvm-exegesis/X86/uops-misspelled-div.s | 8 ++++++++ llvm/tools/llvm-exegesis/lib/SnippetFile.cpp | 1 + 2 files changed, 9 insertions(+) create mode 100644 llvm/test/tools/llvm-exegesis/X86/uops-misspelled-div.s diff --git a/llvm/test/tools/llvm-exegesis/X86/uops-misspelled-div.s b/llvm/test/tools/llvm-exegesis/X86/uops-misspelled-div.s new file mode 100644 index 0000000..05e8f4d --- /dev/null +++ b/llvm/test/tools/llvm-exegesis/X86/uops-misspelled-div.s @@ -0,0 +1,8 @@ +# RUN: not llvm-exegesis -mode=uops -snippets-file=%s 2>&1 | FileCheck %s + +# LLVM-EXEGESIS-DEFREG CL 1 +# LLVM-EXEGESIS-DEFREG AX 1 +div8r cl + +CHECK: error: invalid instruction mnemonic 'div8r' +CHECK: llvm-exegesis error: cannot parse asm file diff --git a/llvm/tools/llvm-exegesis/lib/SnippetFile.cpp b/llvm/tools/llvm-exegesis/lib/SnippetFile.cpp index c71050c..1b8b3e7 100644 --- a/llvm/tools/llvm-exegesis/lib/SnippetFile.cpp +++ b/llvm/tools/llvm-exegesis/lib/SnippetFile.cpp @@ -133,6 +133,7 @@ Expected> readSnippets(const LLVMState &State, MCObjectFileInfo ObjectFileInfo; const TargetMachine &TM = State.getTargetMachine(); MCContext Context(TM.getMCAsmInfo(), TM.getMCRegisterInfo(), &ObjectFileInfo); + Context.initInlineSourceManager(); ObjectFileInfo.InitMCObjectFileInfo(TM.getTargetTriple(), /*PIC*/ false, Context); BenchmarkCodeStreamer Streamer(&Context, TM.getMCRegisterInfo(), &Result); -- 2.7.4