From 9649ff37ef15aae06d4020ce3b7210fa2aaf2a25 Mon Sep 17 00:00:00 2001 From: Luna Schwalbe Date: Wed, 27 Aug 2025 19:09:05 +0200 Subject: [PATCH] BitcodeReader: parse blockinfo inside block Call start/endBlock before/after `parseBlockInfoBlock` in order to not use the current block context, which is wrong and leads to e.g. incorrect abbrevlen being used. --- lib/std/zig/llvm/BitcodeReader.zig | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/std/zig/llvm/BitcodeReader.zig b/lib/std/zig/llvm/BitcodeReader.zig index e0d1632527..a876dcd2eb 100644 --- a/lib/std/zig/llvm/BitcodeReader.zig +++ b/lib/std/zig/llvm/BitcodeReader.zig @@ -154,7 +154,11 @@ pub fn next(bc: *BitcodeReader) !?Item { Abbrev.Builtin.enter_subblock.toRecordId() => { const block_id: u32 = @intCast(record.operands[0]); switch (block_id) { - Block.block_info => try bc.parseBlockInfoBlock(), + Block.block_info => { + try bc.startBlock(Block.block_info, @intCast(record.operands[1])); + try bc.parseBlockInfoBlock(); + try bc.endBlock(); + }, Block.first_reserved...Block.last_standard => return error.UnsupportedBlockId, else => { try bc.startBlock(block_id, @intCast(record.operands[1]));