diff options
author | Guillaume Chatelet <gchatelet@google.com> | 2019-12-13 16:14:39 +0100 |
---|---|---|
committer | Guillaume Chatelet <gchatelet@google.com> | 2019-12-16 13:37:59 +0100 |
commit | c72bff682193118c054eb3d3c59eb718042787da (patch) | |
tree | ad1e60c69be410b8f80dae35ca44f5b3fc3ec2a1 /llvm/tools | |
parent | 181ab91efc9fb08dedda10a2fbc5fccb83ce8799 (diff) | |
download | bcm5719-llvm-c72bff682193118c054eb3d3c59eb718042787da.tar.gz bcm5719-llvm-c72bff682193118c054eb3d3c59eb718042787da.zip |
[llvm-exegesis] Set up AsmTargetStreamer in readSnippets
Summary: This is a follow up on D71137 properly setting up the AsmTargetStreamer prior to AsmParser::Run call.
Reviewers: courbet, mstojanovic
Subscribers: tschuett, mikhail.ramalho, llvm-commits, petarj, atanasyan
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D71468
Diffstat (limited to 'llvm/tools')
-rw-r--r-- | llvm/tools/llvm-exegesis/lib/SnippetFile.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/llvm/tools/llvm-exegesis/lib/SnippetFile.cpp b/llvm/tools/llvm-exegesis/lib/SnippetFile.cpp index 63df5c63453..7941bfa9000 100644 --- a/llvm/tools/llvm-exegesis/lib/SnippetFile.cpp +++ b/llvm/tools/llvm-exegesis/lib/SnippetFile.cpp @@ -9,6 +9,7 @@ #include "SnippetFile.h" #include "Error.h" #include "llvm/MC/MCContext.h" +#include "llvm/MC/MCInstPrinter.h" #include "llvm/MC/MCObjectFileInfo.h" #include "llvm/MC/MCParser/MCAsmParser.h" #include "llvm/MC/MCParser/MCTargetAsmParser.h" @@ -135,6 +136,21 @@ Expected<std::vector<BenchmarkCode>> readSnippets(const LLVMState &State, ObjectFileInfo.InitMCObjectFileInfo(TM.getTargetTriple(), /*PIC*/ false, Context); BenchmarkCodeStreamer Streamer(&Context, TM.getMCRegisterInfo(), &Result); + + std::string Error; + raw_string_ostream ErrorStream(Error); + formatted_raw_ostream InstPrinterOStream(ErrorStream); + const std::unique_ptr<MCInstPrinter> InstPrinter( + TM.getTarget().createMCInstPrinter( + TM.getTargetTriple(), TM.getMCAsmInfo()->getAssemblerDialect(), + *TM.getMCAsmInfo(), *TM.getMCInstrInfo(), *TM.getMCRegisterInfo())); + // The following call will take care of calling Streamer.setTargetStreamer. + TM.getTarget().createAsmTargetStreamer(Streamer, InstPrinterOStream, + InstPrinter.get(), + TM.Options.MCOptions.AsmVerbose); + if (!Streamer.getTargetStreamer()) + return make_error<Failure>("cannot create target asm streamer"); + const std::unique_ptr<MCAsmParser> AsmParser( createMCAsmParser(SM, Context, Streamer, *TM.getMCAsmInfo())); if (!AsmParser) |