Revert "Support for ThinLTO function importing and symbol linking."
[oota-llvm.git] / lib / Bitcode / Reader / BitcodeReader.cpp
index d926f324145cd7dda4e4439e65775ed23172f8ca..1a63e08f6671dd9860717453d72809e0d45add8c 100644 (file)
@@ -151,7 +151,7 @@ class BitcodeReader : public GVMaterializer {
   // Last function offset found in the VST.
   uint64_t LastFunctionBlockBit = 0;
   bool SeenValueSymbolTable = false;
-  unsigned VSTOffset = 0;
+  uint64_t VSTOffset = 0;
   // Contains an arbitrary and optional string identifying the bitcode producer
   std::string ProducerIdentification;
 
@@ -388,7 +388,7 @@ private:
 
   ErrorOr<Value *> recordValue(SmallVectorImpl<uint64_t> &Record,
                                unsigned NameIndex, Triple &TT);
-  std::error_code parseValueSymbolTable(unsigned Offset = 0);
+  std::error_code parseValueSymbolTable(uint64_t Offset = 0);
   std::error_code parseConstants();
   std::error_code rememberAndSkipFunctionBodies();
   std::error_code rememberAndSkipFunctionBody();
@@ -456,7 +456,7 @@ class FunctionIndexBitcodeReader {
   /// summary records.
   DenseMap<uint64_t, StringRef> ModuleIdMap;
 
- public:
+public:
   std::error_code error(BitcodeError E, const Twine &Message);
   std::error_code error(BitcodeError E);
   std::error_code error(const Twine &Message);
@@ -488,7 +488,7 @@ class FunctionIndexBitcodeReader {
                                        FunctionInfoIndex *I,
                                        size_t FunctionSummaryOffset);
 
- private:
+private:
   std::error_code parseModule();
   std::error_code parseValueSymbolTable();
   std::error_code parseEntireSummary();
@@ -1764,7 +1764,7 @@ ErrorOr<Value *> BitcodeReader::recordValue(SmallVectorImpl<uint64_t> &Record,
 
 /// Parse the value symbol table at either the current parsing location or
 /// at the given bit offset if provided.
-std::error_code BitcodeReader::parseValueSymbolTable(unsigned Offset) {
+std::error_code BitcodeReader::parseValueSymbolTable(uint64_t Offset) {
   uint64_t CurrentBit;
   // Pass in the Offset to distinguish between calling for the module-level
   // VST (where we want to jump to the VST offset) and the function-level
@@ -3052,7 +3052,8 @@ std::error_code BitcodeReader::globalCleanup() {
 std::error_code BitcodeReader::rememberAndSkipFunctionBodies() {
   Stream.JumpToBit(NextUnreadBit);
 
-  if (Stream.AtEndOfStream()) return error("Could not find function in stream");
+  if (Stream.AtEndOfStream())
+    return error("Could not find function in stream");
 
   assert(SeenFirstFunctionBody);
   // An old bitcode file with the symbol table at the end would have
@@ -3064,17 +3065,18 @@ std::error_code BitcodeReader::rememberAndSkipFunctionBodies() {
   while (1) {
     BitstreamEntry Entry = Stream.advance();
     switch (Entry.Kind) {
+    default:
+      return error("Expect SubBlock");
+    case BitstreamEntry::SubBlock:
+      switch (Entry.ID) {
       default:
-        return error("Expect SubBlock");
-      case BitstreamEntry::SubBlock:
-        switch (Entry.ID) {
-          default:
-            return error("Expect function block");
-          case bitc::FUNCTION_BLOCK_ID:
-            if (std::error_code EC = rememberAndSkipFunctionBody()) return EC;
-            NextUnreadBit = Stream.GetCurrentBitNo();
-            return std::error_code();
-        }
+        return error("Expect function block");
+      case bitc::FUNCTION_BLOCK_ID:
+        if (std::error_code EC = rememberAndSkipFunctionBody())
+          return EC;
+        NextUnreadBit = Stream.GetCurrentBitNo();
+        return std::error_code();
+      }
     }
   }
 }
@@ -3113,10 +3115,9 @@ std::error_code BitcodeReader::parseBitcodeVersion() {
     case bitc::IDENTIFICATION_CODE_EPOCH: { // EPOCH:      [epoch#]
       unsigned epoch = (unsigned)Record[0];
       if (epoch != bitc::BITCODE_CURRENT_EPOCH) {
-        auto BitcodeEpoch = std::to_string(epoch);
-        auto CurrentEpoch = std::to_string(bitc::BITCODE_CURRENT_EPOCH);
-        return error(Twine("Incompatible epoch: Bitcode '") + BitcodeEpoch +
-                     "' vs current: '" + CurrentEpoch + "'");
+        return error(
+          Twine("Incompatible epoch: Bitcode '") + Twine(epoch) +
+          "' vs current: '" + Twine(bitc::BITCODE_CURRENT_EPOCH) + "'");
       }
     }
     }
@@ -3444,11 +3445,14 @@ std::error_code BitcodeReader::parseModule(uint64_t ResumeBit,
       auto *FTy = dyn_cast<FunctionType>(Ty);
       if (!FTy)
         return error("Invalid type for value");
+      auto CC = static_cast<CallingConv::ID>(Record[1]);
+      if (CC & ~CallingConv::MaxID)
+        return error("Invalid calling convention ID");
 
       Function *Func = Function::Create(FTy, GlobalValue::ExternalLinkage,
                                         "", TheModule);
 
-      Func->setCallingConv(static_cast<CallingConv::ID>(Record[1]));
+      Func->setCallingConv(CC);
       bool isProto = Record[2];
       uint64_t RawLinkage = Record[3];
       Func->setLinkage(getDecodedLinkage(RawLinkage));
@@ -3598,7 +3602,8 @@ BitcodeReader::parseBitcodeInto(std::unique_ptr<DataStreamer> Streamer,
     return EC;
 
   // Sniff for the signature.
-  if (!hasValidBitcodeHeader(Stream)) return error("Invalid bitcode signature");
+  if (!hasValidBitcodeHeader(Stream))
+    return error("Invalid bitcode signature");
 
   // We expect a number of well-defined blocks, though we don't necessarily
   // need to understand them all.
@@ -3670,7 +3675,8 @@ ErrorOr<std::string> BitcodeReader::parseTriple() {
     return EC;
 
   // Sniff for the signature.
-  if (!hasValidBitcodeHeader(Stream)) return error("Invalid bitcode signature");
+  if (!hasValidBitcodeHeader(Stream))
+    return error("Invalid bitcode signature");
 
   // We expect a number of well-defined blocks, though we don't necessarily
   // need to understand them all.
@@ -4581,8 +4587,8 @@ std::error_code BitcodeReader::parseFunctionBody(Function *F) {
       I = InvokeInst::Create(Callee, NormalBB, UnwindBB, Ops, OperandBundles);
       OperandBundles.clear();
       InstructionList.push_back(I);
-      cast<InvokeInst>(I)
-          ->setCallingConv(static_cast<CallingConv::ID>(~(1U << 13) & CCInfo));
+      cast<InvokeInst>(I)->setCallingConv(
+          static_cast<CallingConv::ID>(CallingConv::MaxID & CCInfo));
       cast<InvokeInst>(I)->setAttributes(PAL);
       break;
     }
@@ -4966,7 +4972,7 @@ std::error_code BitcodeReader::parseFunctionBody(Function *F) {
       OperandBundles.clear();
       InstructionList.push_back(I);
       cast<CallInst>(I)->setCallingConv(
-          static_cast<CallingConv::ID>((~(1U << 14) & CCInfo) >> 1));
+          static_cast<CallingConv::ID>((0x7ff & CCInfo) >> 1));
       CallInst::TailCallKind TCK = CallInst::TCK_None;
       if (CCInfo & 1)
         TCK = CallInst::TCK_Tail;
@@ -5079,7 +5085,8 @@ std::error_code BitcodeReader::findFunctionInStream(
     assert(VSTOffset == 0 || !F->hasName());
     // Parse the next body in the stream and set its position in the
     // DeferredFunctionInfo map.
-    if (std::error_code EC = rememberAndSkipFunctionBodies()) return EC;
+    if (std::error_code EC = rememberAndSkipFunctionBodies())
+      return EC;
   }
   return std::error_code();
 }
@@ -5284,16 +5291,14 @@ FunctionIndexBitcodeReader::FunctionIndexBitcodeReader(
     DiagnosticHandlerFunction DiagnosticHandler, bool IsLazy,
     bool CheckFuncSummaryPresenceOnly)
     : DiagnosticHandler(getDiagHandler(DiagnosticHandler, Context)),
-      Buffer(Buffer),
-      IsLazy(IsLazy),
+      Buffer(Buffer), IsLazy(IsLazy),
       CheckFuncSummaryPresenceOnly(CheckFuncSummaryPresenceOnly) {}
 
 FunctionIndexBitcodeReader::FunctionIndexBitcodeReader(
     LLVMContext &Context, DiagnosticHandlerFunction DiagnosticHandler,
     bool IsLazy, bool CheckFuncSummaryPresenceOnly)
     : DiagnosticHandler(getDiagHandler(DiagnosticHandler, Context)),
-      Buffer(nullptr),
-      IsLazy(IsLazy),
+      Buffer(nullptr), IsLazy(IsLazy),
       CheckFuncSummaryPresenceOnly(CheckFuncSummaryPresenceOnly) {}
 
 void FunctionIndexBitcodeReader::freeState() { Buffer = nullptr; }
@@ -5318,58 +5323,58 @@ std::error_code FunctionIndexBitcodeReader::parseValueSymbolTable() {
     BitstreamEntry Entry = Stream.advanceSkippingSubblocks();
 
     switch (Entry.Kind) {
-      case BitstreamEntry::SubBlock:  // Handled for us already.
-      case BitstreamEntry::Error:
-        return error("Malformed block");
-      case BitstreamEntry::EndBlock:
-        return std::error_code();
-      case BitstreamEntry::Record:
-        // The interesting case.
-        break;
+    case BitstreamEntry::SubBlock: // Handled for us already.
+    case BitstreamEntry::Error:
+      return error("Malformed block");
+    case BitstreamEntry::EndBlock:
+      return std::error_code();
+    case BitstreamEntry::Record:
+      // The interesting case.
+      break;
     }
 
     // Read a record.
     Record.clear();
     switch (Stream.readRecord(Entry.ID, Record)) {
-      default:  // Default behavior: ignore (e.g. VST_CODE_BBENTRY records).
-        break;
-      case bitc::VST_CODE_FNENTRY: {
-        // VST_FNENTRY: [valueid, offset, namechar x N]
-        if (convertToString(Record, 2, ValueName))
-          return error("Invalid record");
-        unsigned ValueID = Record[0];
-        uint64_t FuncOffset = Record[1];
-        std::unique_ptr<FunctionInfo> FuncInfo =
-            llvm::make_unique<FunctionInfo>(FuncOffset);
-        if (foundFuncSummary() && !IsLazy) {
-          DenseMap<uint64_t, std::unique_ptr<FunctionSummary>>::iterator SMI =
-              SummaryMap.find(ValueID);
-          assert(SMI != SummaryMap.end() && "Summary info not found");
-          FuncInfo->setFunctionSummary(std::move(SMI->second));
-        }
-        TheIndex->addFunctionInfo(ValueName, std::move(FuncInfo));
-
-        ValueName.clear();
-        break;
+    default: // Default behavior: ignore (e.g. VST_CODE_BBENTRY records).
+      break;
+    case bitc::VST_CODE_FNENTRY: {
+      // VST_FNENTRY: [valueid, offset, namechar x N]
+      if (convertToString(Record, 2, ValueName))
+        return error("Invalid record");
+      unsigned ValueID = Record[0];
+      uint64_t FuncOffset = Record[1];
+      std::unique_ptr<FunctionInfo> FuncInfo =
+          llvm::make_unique<FunctionInfo>(FuncOffset);
+      if (foundFuncSummary() && !IsLazy) {
+        DenseMap<uint64_t, std::unique_ptr<FunctionSummary>>::iterator SMI =
+            SummaryMap.find(ValueID);
+        assert(SMI != SummaryMap.end() && "Summary info not found");
+        FuncInfo->setFunctionSummary(std::move(SMI->second));
       }
-      case bitc::VST_CODE_COMBINED_FNENTRY: {
-        // VST_FNENTRY: [offset, namechar x N]
-        if (convertToString(Record, 1, ValueName))
-          return error("Invalid record");
-        uint64_t FuncSummaryOffset = Record[0];
-        std::unique_ptr<FunctionInfo> FuncInfo =
-            llvm::make_unique<FunctionInfo>(FuncSummaryOffset);
-        if (foundFuncSummary() && !IsLazy) {
-          DenseMap<uint64_t, std::unique_ptr<FunctionSummary>>::iterator SMI =
-              SummaryMap.find(FuncSummaryOffset);
-          assert(SMI != SummaryMap.end() && "Summary info not found");
-          FuncInfo->setFunctionSummary(std::move(SMI->second));
-        }
-        TheIndex->addFunctionInfo(ValueName, std::move(FuncInfo));
+      TheIndex->addFunctionInfo(ValueName, std::move(FuncInfo));
 
-        ValueName.clear();
-        break;
+      ValueName.clear();
+      break;
+    }
+    case bitc::VST_CODE_COMBINED_FNENTRY: {
+      // VST_FNENTRY: [offset, namechar x N]
+      if (convertToString(Record, 1, ValueName))
+        return error("Invalid record");
+      uint64_t FuncSummaryOffset = Record[0];
+      std::unique_ptr<FunctionInfo> FuncInfo =
+          llvm::make_unique<FunctionInfo>(FuncSummaryOffset);
+      if (foundFuncSummary() && !IsLazy) {
+        DenseMap<uint64_t, std::unique_ptr<FunctionSummary>>::iterator SMI =
+            SummaryMap.find(FuncSummaryOffset);
+        assert(SMI != SummaryMap.end() && "Summary info not found");
+        FuncInfo->setFunctionSummary(std::move(SMI->second));
       }
+      TheIndex->addFunctionInfo(ValueName, std::move(FuncInfo));
+
+      ValueName.clear();
+      break;
+    }
     }
   }
 }
@@ -5389,47 +5394,53 @@ std::error_code FunctionIndexBitcodeReader::parseModule() {
     BitstreamEntry Entry = Stream.advance();
 
     switch (Entry.Kind) {
-      case BitstreamEntry::Error:
-        return error("Malformed block");
-      case BitstreamEntry::EndBlock:
-        return std::error_code();
+    case BitstreamEntry::Error:
+      return error("Malformed block");
+    case BitstreamEntry::EndBlock:
+      return std::error_code();
 
-      case BitstreamEntry::SubBlock:
-        if (CheckFuncSummaryPresenceOnly) {
-          if (Entry.ID == bitc::FUNCTION_SUMMARY_BLOCK_ID)
-            SeenFuncSummary = true;
-          if (Stream.SkipBlock()) return error("Invalid record");
-          // No need to parse the rest since we found the summary.
-          return std::error_code();
-        }
-        switch (Entry.ID) {
-          default:  // Skip unknown content.
-            if (Stream.SkipBlock()) return error("Invalid record");
-            break;
-          case bitc::BLOCKINFO_BLOCK_ID:
-            // Need to parse these to get abbrev ids (e.g. for VST)
-            if (Stream.ReadBlockInfoBlock()) return error("Malformed block");
-            break;
-          case bitc::VALUE_SYMTAB_BLOCK_ID:
-            if (std::error_code EC = parseValueSymbolTable()) return EC;
-            break;
-          case bitc::FUNCTION_SUMMARY_BLOCK_ID:
-            SeenFuncSummary = true;
-            if (IsLazy) {
-              // Lazy parsing of summary info, skip it.
-              if (Stream.SkipBlock()) return error("Invalid record");
-            } else if (std::error_code EC = parseEntireSummary())
-              return EC;
-            break;
-          case bitc::MODULE_STRTAB_BLOCK_ID:
-            if (std::error_code EC = parseModuleStringTable()) return EC;
-            break;
-        }
-        continue;
+    case BitstreamEntry::SubBlock:
+      if (CheckFuncSummaryPresenceOnly) {
+        if (Entry.ID == bitc::FUNCTION_SUMMARY_BLOCK_ID)
+          SeenFuncSummary = true;
+        if (Stream.SkipBlock())
+          return error("Invalid record");
+        // No need to parse the rest since we found the summary.
+        return std::error_code();
+      }
+      switch (Entry.ID) {
+      default: // Skip unknown content.
+        if (Stream.SkipBlock())
+          return error("Invalid record");
+        break;
+      case bitc::BLOCKINFO_BLOCK_ID:
+        // Need to parse these to get abbrev ids (e.g. for VST)
+        if (Stream.ReadBlockInfoBlock())
+          return error("Malformed block");
+        break;
+      case bitc::VALUE_SYMTAB_BLOCK_ID:
+        if (std::error_code EC = parseValueSymbolTable())
+          return EC;
+        break;
+      case bitc::FUNCTION_SUMMARY_BLOCK_ID:
+        SeenFuncSummary = true;
+        if (IsLazy) {
+          // Lazy parsing of summary info, skip it.
+          if (Stream.SkipBlock())
+            return error("Invalid record");
+        } else if (std::error_code EC = parseEntireSummary())
+          return EC;
+        break;
+      case bitc::MODULE_STRTAB_BLOCK_ID:
+        if (std::error_code EC = parseModuleStringTable())
+          return EC;
+        break;
+      }
+      continue;
 
-      case BitstreamEntry::Record:
-        Stream.skipRecord(Entry.ID);
-        continue;
+    case BitstreamEntry::Record:
+      Stream.skipRecord(Entry.ID);
+      continue;
     }
   }
 }
@@ -5447,14 +5458,14 @@ std::error_code FunctionIndexBitcodeReader::parseEntireSummary() {
     BitstreamEntry Entry = Stream.advanceSkippingSubblocks();
 
     switch (Entry.Kind) {
-      case BitstreamEntry::SubBlock:  // Handled for us already.
-      case BitstreamEntry::Error:
-        return error("Malformed block");
-      case BitstreamEntry::EndBlock:
-        return std::error_code();
-      case BitstreamEntry::Record:
-        // The interesting case.
-        break;
+    case BitstreamEntry::SubBlock: // Handled for us already.
+    case BitstreamEntry::Error:
+      return error("Malformed block");
+    case BitstreamEntry::EndBlock:
+      return std::error_code();
+    case BitstreamEntry::Record:
+      // The interesting case.
+      break;
     }
 
     // Read a record. The record format depends on whether this
@@ -5467,34 +5478,34 @@ std::error_code FunctionIndexBitcodeReader::parseEntireSummary() {
     Record.clear();
     uint64_t CurRecordBit = Stream.GetCurrentBitNo();
     switch (Stream.readRecord(Entry.ID, Record)) {
-      default:  // Default behavior: ignore.
-        break;
-      // FS_PERMODULE_ENTRY: [valueid, islocal, instcount]
-      case bitc::FS_CODE_PERMODULE_ENTRY: {
-        unsigned ValueID = Record[0];
-        bool IsLocal = Record[1];
-        unsigned InstCount = Record[2];
-        std::unique_ptr<FunctionSummary> FS =
-            llvm::make_unique<FunctionSummary>(InstCount);
-        FS->setLocalFunction(IsLocal);
-        // The module path string ref set in the summary must be owned by the
-        // index's module string table. Since we don't have a module path
-        // string table section in the per-module index, we create a single
-        // module path string table entry with an empty (0) ID to take
-        // ownership.
-        FS->setModulePath(
-            TheIndex->addModulePath(Buffer->getBufferIdentifier(), 0));
-        SummaryMap[ValueID] = std::move(FS);
-      }
-      // FS_COMBINED_ENTRY: [modid, instcount]
-      case bitc::FS_CODE_COMBINED_ENTRY: {
-        uint64_t ModuleId = Record[0];
-        unsigned InstCount = Record[1];
-        std::unique_ptr<FunctionSummary> FS =
-            llvm::make_unique<FunctionSummary>(InstCount);
-        FS->setModulePath(ModuleIdMap[ModuleId]);
-        SummaryMap[CurRecordBit] = std::move(FS);
-      }
+    default: // Default behavior: ignore.
+      break;
+    // FS_PERMODULE_ENTRY: [valueid, islocal, instcount]
+    case bitc::FS_CODE_PERMODULE_ENTRY: {
+      unsigned ValueID = Record[0];
+      bool IsLocal = Record[1];
+      unsigned InstCount = Record[2];
+      std::unique_ptr<FunctionSummary> FS =
+          llvm::make_unique<FunctionSummary>(InstCount);
+      FS->setLocalFunction(IsLocal);
+      // The module path string ref set in the summary must be owned by the
+      // index's module string table. Since we don't have a module path
+      // string table section in the per-module index, we create a single
+      // module path string table entry with an empty (0) ID to take
+      // ownership.
+      FS->setModulePath(
+          TheIndex->addModulePath(Buffer->getBufferIdentifier(), 0));
+      SummaryMap[ValueID] = std::move(FS);
+    }
+    // FS_COMBINED_ENTRY: [modid, instcount]
+    case bitc::FS_CODE_COMBINED_ENTRY: {
+      uint64_t ModuleId = Record[0];
+      unsigned InstCount = Record[1];
+      std::unique_ptr<FunctionSummary> FS =
+          llvm::make_unique<FunctionSummary>(InstCount);
+      FS->setModulePath(ModuleIdMap[ModuleId]);
+      SummaryMap[CurRecordBit] = std::move(FS);
+    }
     }
   }
   llvm_unreachable("Exit infinite loop");
@@ -5513,31 +5524,30 @@ std::error_code FunctionIndexBitcodeReader::parseModuleStringTable() {
     BitstreamEntry Entry = Stream.advanceSkippingSubblocks();
 
     switch (Entry.Kind) {
-      case BitstreamEntry::SubBlock:  // Handled for us already.
-      case BitstreamEntry::Error:
-        return error("Malformed block");
-      case BitstreamEntry::EndBlock:
-        return std::error_code();
-      case BitstreamEntry::Record:
-        // The interesting case.
-        break;
+    case BitstreamEntry::SubBlock: // Handled for us already.
+    case BitstreamEntry::Error:
+      return error("Malformed block");
+    case BitstreamEntry::EndBlock:
+      return std::error_code();
+    case BitstreamEntry::Record:
+      // The interesting case.
+      break;
     }
 
     Record.clear();
     switch (Stream.readRecord(Entry.ID, Record)) {
-      default:  // Default behavior: ignore.
-        break;
-      case bitc::MST_CODE_ENTRY: {
-        // MST_ENTRY: [modid, namechar x N]
-        if (convertToString(Record, 1, ModulePath))
-          return error("Invalid record");
-        uint64_t ModuleId = Record[0];
-        StringRef ModulePathInMap =
-            TheIndex->addModulePath(ModulePath, ModuleId);
-        ModuleIdMap[ModuleId] = ModulePathInMap;
-        ModulePath.clear();
-        break;
-      }
+    default: // Default behavior: ignore.
+      break;
+    case bitc::MST_CODE_ENTRY: {
+      // MST_ENTRY: [modid, namechar x N]
+      if (convertToString(Record, 1, ModulePath))
+        return error("Invalid record");
+      uint64_t ModuleId = Record[0];
+      StringRef ModulePathInMap = TheIndex->addModulePath(ModulePath, ModuleId);
+      ModuleIdMap[ModuleId] = ModulePathInMap;
+      ModulePath.clear();
+      break;
+    }
     }
   }
   llvm_unreachable("Exit infinite loop");
@@ -5548,10 +5558,12 @@ std::error_code FunctionIndexBitcodeReader::parseSummaryIndexInto(
     std::unique_ptr<DataStreamer> Streamer, FunctionInfoIndex *I) {
   TheIndex = I;
 
-  if (std::error_code EC = initStream(std::move(Streamer))) return EC;
+  if (std::error_code EC = initStream(std::move(Streamer)))
+    return EC;
 
   // Sniff for the signature.
-  if (!hasValidBitcodeHeader(Stream)) return error("Invalid bitcode signature");
+  if (!hasValidBitcodeHeader(Stream))
+    return error("Invalid bitcode signature");
 
   // We expect a number of well-defined blocks, though we don't necessarily
   // need to understand them all.
@@ -5564,13 +5576,16 @@ std::error_code FunctionIndexBitcodeReader::parseSummaryIndexInto(
     BitstreamEntry Entry =
         Stream.advance(BitstreamCursor::AF_DontAutoprocessAbbrevs);
 
-    if (Entry.Kind != BitstreamEntry::SubBlock) return error("Malformed block");
+    if (Entry.Kind != BitstreamEntry::SubBlock)
+      return error("Malformed block");
 
     // If we see a MODULE_BLOCK, parse it to find the blocks needed for
     // building the function summary index.
-    if (Entry.ID == bitc::MODULE_BLOCK_ID) return parseModule();
+    if (Entry.ID == bitc::MODULE_BLOCK_ID)
+      return parseModule();
 
-    if (Stream.SkipBlock()) return error("Invalid record");
+    if (Stream.SkipBlock())
+      return error("Invalid record");
   }
 }
 
@@ -5584,38 +5599,41 @@ std::error_code FunctionIndexBitcodeReader::parseFunctionSummary(
     size_t FunctionSummaryOffset) {
   TheIndex = I;
 
-  if (std::error_code EC = initStream(std::move(Streamer))) return EC;
+  if (std::error_code EC = initStream(std::move(Streamer)))
+    return EC;
 
   // Sniff for the signature.
-  if (!hasValidBitcodeHeader(Stream)) return error("Invalid bitcode signature");
+  if (!hasValidBitcodeHeader(Stream))
+    return error("Invalid bitcode signature");
 
   Stream.JumpToBit(FunctionSummaryOffset);
 
   BitstreamEntry Entry = Stream.advanceSkippingSubblocks();
 
   switch (Entry.Kind) {
-    default:
-      return error("Malformed block");
-    case BitstreamEntry::Record:
-      // The expected case.
-      break;
+  default:
+    return error("Malformed block");
+  case BitstreamEntry::Record:
+    // The expected case.
+    break;
   }
 
   // TODO: Read a record. This interface will be completed when ThinLTO
   // importing is added so that it can be tested.
   SmallVector<uint64_t, 64> Record;
   switch (Stream.readRecord(Entry.ID, Record)) {
-    case bitc::FS_CODE_COMBINED_ENTRY:
-    default:
-      return error("Invalid record");
+  case bitc::FS_CODE_COMBINED_ENTRY:
+  default:
+    return error("Invalid record");
   }
 
   return std::error_code();
 }
 
-std::error_code FunctionIndexBitcodeReader::initStream(
-    std::unique_ptr<DataStreamer> Streamer) {
-  if (Streamer) return initLazyStream(std::move(Streamer));
+std::error_code
+FunctionIndexBitcodeReader::initStream(std::unique_ptr<DataStreamer> Streamer) {
+  if (Streamer)
+    return initLazyStream(std::move(Streamer));
   return initStreamFromBuffer();
 }
 
@@ -5623,7 +5641,8 @@ std::error_code FunctionIndexBitcodeReader::initStreamFromBuffer() {
   const unsigned char *BufPtr = (const unsigned char *)Buffer->getBufferStart();
   const unsigned char *BufEnd = BufPtr + Buffer->getBufferSize();
 
-  if (Buffer->getBufferSize() & 3) return error("Invalid bitcode signature");
+  if (Buffer->getBufferSize() & 3)
+    return error("Invalid bitcode signature");
 
   // If we have a wrapper header, parse it and ignore the non-bc file contents.
   // The magic number is 0x0B17C0DE stored in little endian.
@@ -5651,7 +5670,8 @@ std::error_code FunctionIndexBitcodeReader::initLazyStream(
   if (Bytes.readBytes(buf, 16, 0) != 16)
     return error("Invalid bitcode signature");
 
-  if (!isBitcode(buf, buf + 16)) return error("Invalid bitcode signature");
+  if (!isBitcode(buf, buf + 16))
+    return error("Invalid bitcode signature");
 
   if (isBitcodeWrapper(buf, buf + 4)) {
     const unsigned char *bitcodeStart = buf;
@@ -5790,9 +5810,10 @@ llvm::getBitcodeTargetTriple(MemoryBufferRef Buffer, LLVMContext &Context,
 // the index. Otherwise skip the function summary section, and only create
 // an index object with a map from function name to function summary offset.
 // The index is used to perform lazy function summary reading later.
-ErrorOr<std::unique_ptr<FunctionInfoIndex>> llvm::getFunctionInfoIndex(
-    MemoryBufferRef Buffer, LLVMContext &Context,
-    DiagnosticHandlerFunction DiagnosticHandler, bool IsLazy) {
+ErrorOr<std::unique_ptr<FunctionInfoIndex>>
+llvm::getFunctionInfoIndex(MemoryBufferRef Buffer, LLVMContext &Context,
+                           DiagnosticHandlerFunction DiagnosticHandler,
+                           bool IsLazy) {
   std::unique_ptr<MemoryBuffer> Buf = MemoryBuffer::getMemBuffer(Buffer, false);
   FunctionIndexBitcodeReader R(Buf.get(), Context, DiagnosticHandler, IsLazy);
 
@@ -5800,14 +5821,14 @@ ErrorOr<std::unique_ptr<FunctionInfoIndex>> llvm::getFunctionInfoIndex(
       llvm::make_unique<FunctionInfoIndex>();
 
   auto cleanupOnError = [&](std::error_code EC) {
-    R.releaseBuffer();  // Never take ownership on error.
+    R.releaseBuffer(); // Never take ownership on error.
     return EC;
   };
 
   if (std::error_code EC = R.parseSummaryIndexInto(nullptr, Index.get()))
     return cleanupOnError(EC);
 
-  Buf.release();  // The FunctionIndexBitcodeReader owns it now.
+  Buf.release(); // The FunctionIndexBitcodeReader owns it now.
   return std::move(Index);
 }
 
@@ -5819,14 +5840,14 @@ bool llvm::hasFunctionSummary(MemoryBufferRef Buffer, LLVMContext &Context,
                                true);
 
   auto cleanupOnError = [&](std::error_code EC) {
-    R.releaseBuffer();  // Never take ownership on error.
+    R.releaseBuffer(); // Never take ownership on error.
     return false;
   };
 
   if (std::error_code EC = R.parseSummaryIndexInto(nullptr, nullptr))
     return cleanupOnError(EC);
 
-  Buf.release();  // The FunctionIndexBitcodeReader owns it now.
+  Buf.release(); // The FunctionIndexBitcodeReader owns it now.
   return R.foundFuncSummary();
 }
 
@@ -5836,15 +5857,16 @@ bool llvm::hasFunctionSummary(MemoryBufferRef Buffer, LLVMContext &Context,
 // Then this method is called for each function considered for importing,
 // to parse the summary information for the given function name into
 // the index.
-std::error_code llvm::readFunctionSummary(
-    MemoryBufferRef Buffer, LLVMContext &Context,
-    DiagnosticHandlerFunction DiagnosticHandler, StringRef FunctionName,
-    std::unique_ptr<FunctionInfoIndex> Index) {
+std::error_code
+llvm::readFunctionSummary(MemoryBufferRef Buffer, LLVMContext &Context,
+                          DiagnosticHandlerFunction DiagnosticHandler,
+                          StringRef FunctionName,
+                          std::unique_ptr<FunctionInfoIndex> Index) {
   std::unique_ptr<MemoryBuffer> Buf = MemoryBuffer::getMemBuffer(Buffer, false);
   FunctionIndexBitcodeReader R(Buf.get(), Context, DiagnosticHandler);
 
   auto cleanupOnError = [&](std::error_code EC) {
-    R.releaseBuffer();  // Never take ownership on error.
+    R.releaseBuffer(); // Never take ownership on error.
     return EC;
   };
 
@@ -5859,6 +5881,6 @@ std::error_code llvm::readFunctionSummary(
       return cleanupOnError(EC);
   }
 
-  Buf.release();  // The FunctionIndexBitcodeReader owns it now.
+  Buf.release(); // The FunctionIndexBitcodeReader owns it now.
   return std::error_code();
 }