diff --git a/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp b/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp index 08724bd8c815..e173d80eafb3 100644 --- a/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp +++ b/llvm/lib/Bitcode/Writer/BitcodeWriter.cpp @@ -1429,19 +1429,17 @@ static void WriteModuleMetadata(const Module &M, static void WriteFunctionLocalMetadata(const Function &F, const ValueEnumerator &VE, BitstreamWriter &Stream) { - bool StartedMetadataBlock = false; - SmallVector Record; - for (const Metadata *MD : VE.getFunctionMDs()) { - auto *Local = cast(MD); - if (!StartedMetadataBlock) { - Stream.EnterSubblock(bitc::METADATA_BLOCK_ID, 3); - StartedMetadataBlock = true; - } - WriteValueAsMetadata(Local, VE, Stream, Record); - } + ArrayRef MDs = VE.getFunctionMDs(); + if (MDs.empty()) + return; - if (StartedMetadataBlock) - Stream.ExitBlock(); + Stream.EnterSubblock(bitc::METADATA_BLOCK_ID, 3); + + SmallVector Record; + for (const Metadata *MD : VE.getFunctionMDs()) + WriteValueAsMetadata(cast(MD), VE, Stream, Record); + + Stream.ExitBlock(); } static void WriteMetadataAttachment(const Function &F,