[IR/Diagnostic] Assert that DebugLoc is valid before accessing.
[oota-llvm.git] / tools / llvm-readobj / llvm-readobj.cpp
index 32db723fa6f49f3fbc5a9feeee303905e292559b..7e6ce49672313b7d25bf6e1db3732f93c6553af1 100644 (file)
@@ -325,13 +325,12 @@ static void dumpArchive(const Archive *Arc) {
 static void dumpMachOUniversalBinary(const MachOUniversalBinary *UBinary) {
   for (const MachOUniversalBinary::ObjectForArch &Obj : UBinary->objects()) {
     ErrorOr<std::unique_ptr<MachOObjectFile>> ObjOrErr = Obj.getAsObjectFile();
-    if (std::error_code EC = ObjOrErr.getError()) {
-      reportError(UBinary->getFileName(), EC.message());
-      continue;
-    }
-
-    if (MachOObjectFile *MachOObj = ObjOrErr.get().get())
-      dumpObject(MachOObj);
+    if (ObjOrErr)
+      dumpObject(&*ObjOrErr.get());
+    else if (ErrorOr<std::unique_ptr<Archive>> AOrErr = Obj.getAsArchive())
+      dumpArchive(&*AOrErr.get());
+    else
+      reportError(UBinary->getFileName(), ObjOrErr.getError().message());
   }
 }