[llvm-bcanalyzer] Fixed error 'Expected<T> must be checked before access or destruction'
authorDenis Bakhvalov <denis.bakhvalov@intel.com>
Wed, 17 Jul 2019 23:28:39 +0000 (23:28 +0000)
committerDenis Bakhvalov <denis.bakhvalov@intel.com>
Wed, 17 Jul 2019 23:28:39 +0000 (23:28 +0000)
After rL365286 I had failing test:
  LLVM :: tools/gold/X86/v1.12/thinlto_emit_linked_objects.ll

It was failing with the output:
$ llvm-bcanalyzer --dump llvm/test/tools/gold/X86/v1.12/Output/thinlto_emit_linked_objects.ll.tmp3.o.thinlto.bc
Expected<T> must be checked before access or destruction.
Unchecked Expected<T> contained error:
Unexpected end of file reading 0 of 0 bytesStack dump:

Change-Id: I07e03262074ea5e0aae7a8d787d5487c87f914a2
llvm-svn: 366387

llvm/lib/Bitcode/Reader/BitcodeAnalyzer.cpp

index 8794050..9c30d56 100644 (file)
@@ -539,8 +539,11 @@ BitcodeAnalyzer::BitcodeAnalyzer(StringRef Buffer,
 
 Error BitcodeAnalyzer::analyze(Optional<BCDumpOptions> O,
                                Optional<StringRef> CheckHash) {
-  if (Expected<CurStreamTypeType> H = analyzeHeader(O, Stream))
-    CurStreamType = *H;
+  Expected<CurStreamTypeType> MaybeType = analyzeHeader(O, Stream);
+  if (!MaybeType)
+    return MaybeType.takeError();
+  else
+    CurStreamType = *MaybeType;
 
   Stream.setBlockInfo(&BlockInfo);