[PATCH] D29362: Return Error instead of bool from mergeTypeStreams().

Zachary Turner via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Feb 1 10:35:38 PST 2017

zturner added inline comments.

Comment at: llvm/include/llvm/DebugInfo/CodeView/TypeStreamMerger.h:16
 #include "llvm/DebugInfo/CodeView/TypeTableBuilder.h"
 namespace llvm {
Should probably `#include "llvm/Support/Error.h"` here.

Comment at: llvm/lib/DebugInfo/CodeView/TypeStreamMerger.cpp:98-99
+    if (!Record.remapTypeIndices(IndexMap))
+      LastError =
+          llvm::make_error<CodeViewError>(cv_error_code::corrupt_record);
If there is more than one error, this will trigger an exception because you will have not checked the previous value of the error.  Instead of storing an `Optional<Error>` maybe try storing just an `Error`, and then saying 

LastError = llvm::join_errors(std::move(LastError), llvm::make_error<CodeViewError>(cv_error_code::corrupt_record));

Comment at: llvm/lib/DebugInfo/CodeView/TypeStreamMerger.cpp:180
+  if (LastError.hasValue()) {
+    Error E = std::move(*LastError);
If you do the above, you can simply return `LastError` here.


More information about the llvm-commits mailing list