diff options
Diffstat (limited to 'llvm/tools/llvm-opt-report/OptReport.cpp')
-rw-r--r-- | llvm/tools/llvm-opt-report/OptReport.cpp | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/llvm/tools/llvm-opt-report/OptReport.cpp b/llvm/tools/llvm-opt-report/OptReport.cpp index 80d0b73664d..5662c9fbd7b 100644 --- a/llvm/tools/llvm-opt-report/OptReport.cpp +++ b/llvm/tools/llvm-opt-report/OptReport.cpp @@ -150,20 +150,32 @@ static bool readLocationInfo(LocationInfoTy &LocationInfo) { return false; } - remarks::Parser Parser(remarks::Format::YAML, (*Buf)->getBuffer()); + Expected<std::unique_ptr<remarks::Parser>> MaybeParser = + remarks::createRemarkParser(remarks::Format::YAML, (*Buf)->getBuffer()); + if (!MaybeParser) { + handleAllErrors(MaybeParser.takeError(), [&](const ErrorInfoBase &PE) { + PE.log(WithColor::error()); + }); + return false; + } + remarks::Parser &Parser = **MaybeParser; while (true) { - Expected<const remarks::Remark *> RemarkOrErr = Parser.getNext(); - if (!RemarkOrErr) { - handleAllErrors(RemarkOrErr.takeError(), [&](const ErrorInfoBase &PE) { + Expected<std::unique_ptr<remarks::Remark>> MaybeRemark = Parser.next(); + if (!MaybeRemark) { + Error E = MaybeRemark.takeError(); + if (E.isA<remarks::EndOfFileError>()) { + // EOF. + consumeError(std::move(E)); + break; + } + handleAllErrors(MaybeRemark.takeError(), [&](const ErrorInfoBase &PE) { PE.log(WithColor::error()); }); return false; } - if (!*RemarkOrErr) // End of file. - break; - const remarks::Remark &Remark = **RemarkOrErr; + const remarks::Remark &Remark = **MaybeRemark; bool Transformed = Remark.RemarkType == remarks::Type::Passed; |