From 153a261a828a27f5a6fa2aeca7652a565ae47bab Mon Sep 17 00:00:00 2001 From: Rui Ueyama Date: Wed, 1 Feb 2017 22:28:43 +0000 Subject: [PATCH] Revert r293820: Return Error instead of bool from mergeTypeStreams(). It broke buildbots. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@293824 91177308-0d34-0410-b5e6-96231b3b80d8 --- .../DebugInfo/CodeView/TypeStreamMerger.h | 3 +- lib/DebugInfo/CodeView/TypeStreamMerger.cpp | 38 +++++++++---------- 2 files changed, 18 insertions(+), 23 deletions(-) diff --git a/include/llvm/DebugInfo/CodeView/TypeStreamMerger.h b/include/llvm/DebugInfo/CodeView/TypeStreamMerger.h index 3c915af1657..af396c79d07 100644 --- a/include/llvm/DebugInfo/CodeView/TypeStreamMerger.h +++ b/include/llvm/DebugInfo/CodeView/TypeStreamMerger.h @@ -13,13 +13,12 @@ #include "llvm/ADT/ArrayRef.h" #include "llvm/ADT/SmallVector.h" #include "llvm/DebugInfo/CodeView/TypeTableBuilder.h" -#include "llvm/Support/Error.h" namespace llvm { namespace codeview { /// Merges one type stream into another. Returns true on success. -Error mergeTypeStreams(TypeTableBuilder &DestStream, const CVTypeArray &Types); +bool mergeTypeStreams(TypeTableBuilder &DestStream, const CVTypeArray &Types); } // end namespace codeview } // end namespace llvm diff --git a/lib/DebugInfo/CodeView/TypeStreamMerger.cpp b/lib/DebugInfo/CodeView/TypeStreamMerger.cpp index 07984ad2fe3..ed6cf5743a1 100644 --- a/lib/DebugInfo/CodeView/TypeStreamMerger.cpp +++ b/lib/DebugInfo/CodeView/TypeStreamMerger.cpp @@ -55,7 +55,9 @@ namespace { class TypeStreamMerger : public TypeVisitorCallbacks { public: TypeStreamMerger(TypeTableBuilder &DestStream) - : DestStream(DestStream), FieldListBuilder(DestStream) {} + : DestStream(DestStream), FieldListBuilder(DestStream) { + assert(!hadError()); + } /// TypeVisitorCallbacks overrides. #define TYPE_RECORD(EnumName, EnumVal, Name) \ @@ -72,15 +74,12 @@ public: Error visitTypeEnd(CVType &Record) override; Error visitMemberEnd(CVMemberRecord &Record) override; - Error mergeStream(const CVTypeArray &Types); + bool mergeStream(const CVTypeArray &Types); private: template Error visitKnownRecordImpl(RecordType &Record) { - if (!Record.remapTypeIndices(IndexMap)) - LastError = joinErrors( - std::move(*LastError), - llvm::make_error(cv_error_code::corrupt_record)); + FoundBadTypeIndex |= !Record.remapTypeIndices(IndexMap); IndexMap.push_back(DestStream.writeKnownType(Record)); return Error::success(); } @@ -95,15 +94,14 @@ private: template Error visitKnownMemberRecordImpl(RecordType &Record) { - if (!Record.remapTypeIndices(IndexMap)) - LastError = joinErrors( - std::move(*LastError), - llvm::make_error(cv_error_code::corrupt_record)); + FoundBadTypeIndex |= !Record.remapTypeIndices(IndexMap); FieldListBuilder.writeMemberType(Record); return Error::success(); } - Optional LastError; + bool hadError() { return FoundBadTypeIndex; } + + bool FoundBadTypeIndex = false; BumpPtrAllocator Allocator; @@ -165,10 +163,9 @@ Error TypeStreamMerger::visitUnknownType(CVType &Rec) { return llvm::make_error(cv_error_code::corrupt_record); } -Error TypeStreamMerger::mergeStream(const CVTypeArray &Types) { +bool TypeStreamMerger::mergeStream(const CVTypeArray &Types) { assert(IndexMap.empty()); TypeVisitorCallbackPipeline Pipeline; - LastError = Error::success(); TypeDeserializer Deserializer; Pipeline.addCallbackToPipeline(Deserializer); @@ -176,16 +173,15 @@ Error TypeStreamMerger::mergeStream(const CVTypeArray &Types) { CVTypeVisitor Visitor(Pipeline); - if (auto EC = Visitor.visitTypeStream(Types)) - return EC; + if (auto EC = Visitor.visitTypeStream(Types)) { + consumeError(std::move(EC)); + return false; + } IndexMap.clear(); - - Error Ret = std::move(*LastError); - LastError.reset(); - return Ret; + return !hadError(); } -Error llvm::codeview::mergeTypeStreams(TypeTableBuilder &DestStream, - const CVTypeArray &Types) { +bool llvm::codeview::mergeTypeStreams(TypeTableBuilder &DestStream, + const CVTypeArray &Types) { return TypeStreamMerger(DestStream).mergeStream(Types); } -- 2.50.1