diff --git a/bootstrap/compiler.zig b/bootstrap/compiler.zig index b59620b..3cd604f 100644 --- a/bootstrap/compiler.zig +++ b/bootstrap/compiler.zig @@ -721,14 +721,14 @@ const debug_main_bitcode align(@sizeOf(u32)) = [_]u8 { 0x05, 0x00, 0x00, 0x00, 0x62, 0x0c, 0x30, 0x24, 0x4a, 0x59, 0xbe, 0x66, - 0xbd, 0xfb, 0xb4, 0xaf, + 0xcd, 0xfb, 0xb5, 0xaf, 0x0b, 0x51, 0x80, 0x4c, 0x01, 0x00, 0x00, 0x00, 0x21, 0x0c, 0x00, 0x00, - 0x55, 0x02, 0x00, 0x00, + 0x77, 0x02, 0x00, 0x00, 0x0b, 0x02, 0x21, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x16, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x07, 0x81, 0x23, 0x91, 0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32, 0x39, @@ -747,10 +747,11 @@ const debug_main_bitcode align(@sizeOf(u32)) = [_]u8 { 0xb1, 0x14, 0x20, 0x43, 0x46, 0x88, 0x20, 0xc9, 0x01, 0x32, 0x32, 0x84, - 0x18, 0x2a, 0x28, 0x2a, - 0x90, 0x31, 0x7c, 0xb0, - 0x5c, 0x91, 0x20, 0xc3, - 0xc8, 0x00, 0x00, 0x00, + 0x58, 0x0e, 0x90, 0x91, + 0x21, 0x44, 0x90, 0xa1, + 0x82, 0xa2, 0x02, 0x19, + 0xc3, 0x07, 0xcb, 0x15, + 0x09, 0x32, 0x8c, 0x0c, 0x89, 0x20, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x22, 0x66, 0x04, 0x10, @@ -765,142 +766,146 @@ const debug_main_bitcode align(@sizeOf(u32)) = [_]u8 { 0x01, 0x18, 0x08, 0x28, 0xc4, 0x48, 0x02, 0x00, 0x51, 0x18, 0x00, 0x00, - 0x52, 0x00, 0x00, 0x00, - 0x1b, 0x58, 0x23, 0xf8, + 0x51, 0x00, 0x00, 0x00, + 0x1b, 0x54, 0x23, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x01, 0x70, 0x00, 0x09, - 0x28, 0x03, 0x80, 0x0b, - 0xc2, 0x40, 0x20, 0xcc, - 0x41, 0x1e, 0xc2, 0xa1, - 0x1d, 0xca, 0xa1, 0x0d, - 0xe0, 0xe1, 0x1d, 0xd2, - 0xc1, 0x1d, 0xe8, 0xa1, - 0x1c, 0xe4, 0x01, 0x08, - 0x07, 0x76, 0x60, 0x07, - 0x80, 0x68, 0x87, 0x74, - 0x70, 0x87, 0x36, 0x60, - 0x87, 0x72, 0x38, 0x87, - 0x70, 0x60, 0x87, 0x36, - 0xb0, 0x87, 0x72, 0x18, - 0x07, 0x7a, 0x78, 0x07, - 0x79, 0x68, 0x83, 0x7b, - 0x48, 0x07, 0x72, 0xa0, - 0x07, 0x74, 0x00, 0xe0, - 0x00, 0x20, 0xdc, 0xe1, - 0x1d, 0xda, 0x80, 0x1e, - 0xe4, 0x21, 0x1c, 0xe0, - 0x01, 0x1e, 0xd2, 0xc1, - 0x1d, 0xce, 0xa1, 0x0d, - 0xda, 0x21, 0x1c, 0xe8, - 0x01, 0x1d, 0x00, 0x7a, - 0x90, 0x87, 0x7a, 0x28, - 0x07, 0x80, 0x98, 0x07, - 0x7a, 0x08, 0x87, 0x71, - 0x58, 0x87, 0x36, 0x80, - 0x07, 0x79, 0x78, 0x07, - 0x7a, 0x28, 0x87, 0x71, - 0xa0, 0x87, 0x77, 0x90, - 0x87, 0x36, 0x10, 0x87, - 0x7a, 0x30, 0x07, 0x73, - 0x28, 0x07, 0x79, 0x68, - 0x83, 0x79, 0x48, 0x07, - 0x7d, 0x28, 0x07, 0x00, - 0x0f, 0x00, 0x82, 0x1e, - 0xc2, 0x41, 0x1e, 0xce, - 0xa1, 0x1c, 0xe8, 0xa1, - 0x0d, 0xc6, 0x01, 0x1e, - 0xea, 0x01, 0xc0, 0x07, - 0x3c, 0xb0, 0x83, 0x36, - 0xb0, 0x03, 0x3a, 0x00, - 0x08, 0x7a, 0x08, 0x07, - 0x79, 0x38, 0x87, 0x72, - 0xa0, 0x87, 0x36, 0x30, - 0x87, 0x72, 0x08, 0x07, - 0x7a, 0xa8, 0x07, 0x79, - 0x28, 0x87, 0x79, 0x00, - 0xd6, 0x60, 0x1c, 0xda, - 0xe1, 0x1d, 0xec, 0x81, - 0x0d, 0xd6, 0x60, 0x1c, - 0xf0, 0x01, 0x0f, 0xd8, - 0x60, 0x0d, 0xcc, 0x01, - 0x1f, 0xe6, 0x41, 0x1e, - 0xd8, 0x60, 0x0d, 0xda, - 0xa1, 0x1d, 0xf0, 0x81, - 0x0d, 0xd6, 0x60, 0x1e, - 0xe6, 0xa1, 0x1c, 0xd8, - 0x60, 0x0d, 0xe6, 0x61, - 0x1e, 0xca, 0x41, 0x0e, - 0xd8, 0x60, 0x0d, 0xf0, - 0x01, 0x0f, 0xee, 0x00, - 0x20, 0xe8, 0xa1, 0x1e, - 0xdc, 0xa1, 0x1c, 0xda, - 0x60, 0x1c, 0xe0, 0xa1, - 0x1e, 0x80, 0x73, 0x28, - 0x07, 0x77, 0x28, 0x07, - 0x79, 0x48, 0x87, 0x71, - 0x00, 0x36, 0x10, 0x42, - 0x00, 0x90, 0xc2, 0x06, - 0x62, 0x10, 0x00, 0x52, - 0xd8, 0x10, 0x11, 0xff, - 0xff, 0xff, 0xff, 0x3f, - 0x00, 0xa7, 0x00, 0xf8, - 0x01, 0xf0, 0x07, 0x80, - 0x04, 0xd4, 0x01, 0xd0, - 0x07, 0x81, 0x2d, 0x00, - 0x00, 0x00, 0x00, 0x00, + 0x28, 0x83, 0x20, 0x0c, + 0x04, 0xc2, 0x1c, 0xe4, + 0x21, 0x1c, 0xda, 0xa1, + 0x1c, 0xda, 0x00, 0x1e, + 0xde, 0x21, 0x1d, 0xdc, + 0x81, 0x1e, 0xca, 0x41, + 0x1e, 0x80, 0x70, 0x60, + 0x07, 0x76, 0x00, 0x88, + 0x76, 0x48, 0x07, 0x77, + 0x68, 0x03, 0x76, 0x28, + 0x87, 0x73, 0x08, 0x07, + 0x76, 0x68, 0x03, 0x7b, + 0x28, 0x87, 0x71, 0xa0, + 0x87, 0x77, 0x90, 0x87, + 0x36, 0xb8, 0x87, 0x74, + 0x20, 0x07, 0x7a, 0x40, + 0x07, 0x00, 0x0e, 0x00, + 0xc2, 0x1d, 0xde, 0xa1, + 0x0d, 0xe8, 0x41, 0x1e, + 0xc2, 0x01, 0x1e, 0xe0, + 0x21, 0x1d, 0xdc, 0xe1, + 0x1c, 0xda, 0xa0, 0x1d, + 0xc2, 0x81, 0x1e, 0xd0, + 0x01, 0xa0, 0x07, 0x79, + 0xa8, 0x87, 0x72, 0x00, + 0x88, 0x79, 0xa0, 0x87, + 0x70, 0x18, 0x87, 0x75, + 0x68, 0x03, 0x78, 0x90, + 0x87, 0x77, 0xa0, 0x87, + 0x72, 0x18, 0x07, 0x7a, + 0x78, 0x07, 0x79, 0x68, + 0x03, 0x71, 0xa8, 0x07, + 0x73, 0x30, 0x87, 0x72, + 0x90, 0x87, 0x36, 0x98, + 0x87, 0x74, 0xd0, 0x87, + 0x72, 0x00, 0xf0, 0x00, + 0x20, 0xe8, 0x21, 0x1c, + 0xe4, 0xe1, 0x1c, 0xca, + 0x81, 0x1e, 0xda, 0x60, + 0x1c, 0xe0, 0xa1, 0x1e, + 0x00, 0x7c, 0xc0, 0x03, + 0x3b, 0x68, 0x03, 0x3b, + 0xa0, 0x03, 0x80, 0xa0, + 0x87, 0x70, 0x90, 0x87, + 0x73, 0x28, 0x07, 0x7a, + 0x68, 0x03, 0x73, 0x28, + 0x87, 0x70, 0xa0, 0x87, + 0x7a, 0x90, 0x87, 0x72, + 0x98, 0x07, 0x60, 0x0d, + 0xc6, 0xa1, 0x1d, 0xde, + 0xc1, 0x1e, 0xd8, 0x60, + 0x0d, 0xc6, 0x01, 0x1f, + 0xf0, 0x80, 0x0d, 0xd6, + 0xc0, 0x1c, 0xf0, 0x61, + 0x1e, 0xe4, 0x81, 0x0d, + 0xd6, 0xa0, 0x1d, 0xda, + 0x01, 0x1f, 0xd8, 0x60, + 0x0d, 0xe6, 0x61, 0x1e, + 0xca, 0x81, 0x0d, 0xd6, + 0x60, 0x1e, 0xe6, 0xa1, + 0x1c, 0xe4, 0x80, 0x0d, + 0xd6, 0x00, 0x1f, 0xf0, + 0xe0, 0x0e, 0x00, 0x82, + 0x1e, 0xea, 0xc1, 0x1d, + 0xca, 0xa1, 0x0d, 0xc6, + 0x01, 0x1e, 0xea, 0x01, + 0x38, 0x87, 0x72, 0x70, + 0x87, 0x72, 0x90, 0x87, + 0x74, 0x18, 0x07, 0x60, + 0x03, 0x21, 0x04, 0x00, + 0x29, 0x6c, 0x20, 0x06, + 0x01, 0x20, 0x85, 0x0d, + 0x11, 0xf1, 0xff, 0xff, + 0xff, 0xff, 0x03, 0x70, + 0x0a, 0x80, 0x1f, 0x00, + 0x7f, 0x00, 0x48, 0x40, + 0x1d, 0x00, 0x7d, 0x10, + 0xd8, 0x02, 0x00, 0x00, 0x49, 0x18, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x86, 0x40, 0x18, 0x26, 0x04, 0x04, 0x00, - 0x13, 0x26, 0x7c, 0xc0, + 0x13, 0x30, 0x7c, 0xc0, 0x03, 0x3b, 0xf8, 0x05, 0x3b, 0xa0, 0x83, 0x36, - 0x80, 0x87, 0x71, 0x68, - 0x03, 0x76, 0x48, 0x07, - 0x77, 0xa8, 0x07, 0x7c, - 0x68, 0x83, 0x73, 0x70, - 0x87, 0x7a, 0xd8, 0x60, - 0x0a, 0xe5, 0xd0, 0x06, - 0xed, 0xa0, 0x07, 0xe5, + 0xa8, 0x07, 0x77, 0x58, + 0x07, 0x77, 0x78, 0x87, + 0x7b, 0x70, 0x87, 0x36, + 0x60, 0x87, 0x74, 0x70, + 0x87, 0x7a, 0xc0, 0x87, + 0x36, 0x38, 0x07, 0x77, + 0xa8, 0x87, 0x0d, 0xaf, + 0x50, 0x0e, 0x6d, 0xd0, + 0x0e, 0x7a, 0x50, 0x0e, + 0x6d, 0x00, 0x0f, 0x72, + 0x70, 0x07, 0x70, 0xa0, + 0x07, 0x73, 0x20, 0x07, + 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xf0, 0x20, - 0x07, 0x77, 0x00, 0x07, + 0x07, 0x77, 0x10, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x00, 0x0f, - 0x72, 0x70, 0x07, 0x71, - 0xa0, 0x07, 0x73, 0x20, - 0x07, 0x7a, 0x30, 0x07, - 0x72, 0xd0, 0x06, 0xf0, - 0x20, 0x07, 0x77, 0x20, + 0x72, 0x70, 0x07, 0x72, + 0xa0, 0x07, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, - 0x74, 0xa0, 0x07, 0x76, - 0x40, 0x07, 0x6d, 0x90, - 0x0e, 0x76, 0x40, 0x07, - 0x7a, 0x60, 0x07, 0x74, - 0xd0, 0x06, 0xe6, 0x80, - 0x07, 0x70, 0xa0, 0x07, - 0x71, 0x20, 0x07, 0x78, - 0xd0, 0x06, 0xee, 0x80, - 0x07, 0x7a, 0x10, 0x07, - 0x76, 0xa0, 0x07, 0x73, - 0x20, 0x07, 0x7a, 0x60, - 0x07, 0x74, 0xd0, 0x06, - 0xb3, 0x10, 0x07, 0x72, - 0x80, 0x07, 0x1a, 0x21, - 0x0c, 0x69, 0x30, 0x00, - 0xd2, 0xf8, 0xc2, 0x90, - 0x0a, 0x20, 0x04, 0x00, - 0x00, 0x02, 0x00, 0x00, + 0x74, 0xd0, 0x06, 0xe9, + 0x60, 0x07, 0x74, 0xa0, + 0x07, 0x76, 0x40, 0x07, + 0x6d, 0x90, 0x0e, 0x71, + 0x20, 0x07, 0x78, 0xa0, + 0x07, 0x71, 0x20, 0x07, + 0x78, 0xd0, 0x06, 0xe6, + 0x80, 0x07, 0x70, 0xa0, + 0x07, 0x71, 0x20, 0x07, + 0x78, 0xd0, 0x06, 0xee, + 0x80, 0x07, 0x7a, 0x10, + 0x07, 0x76, 0xa0, 0x07, + 0x73, 0x20, 0x07, 0x7a, + 0x60, 0x07, 0x74, 0xd0, + 0x06, 0xb3, 0x10, 0x07, + 0x72, 0x80, 0x07, 0x1a, + 0x21, 0x0c, 0x69, 0x30, + 0x00, 0xd2, 0xf8, 0xc2, + 0x90, 0x0a, 0x20, 0x04, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x08, 0x00, 0x02, - 0x18, 0x52, 0x11, 0x50, - 0x01, 0x04, 0x80, 0x00, + 0x00, 0x00, 0x08, 0x00, + 0x02, 0x18, 0x52, 0x11, + 0x50, 0x01, 0x04, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x40, 0x00, 0x12, 0x1b, - 0x04, 0x8a, 0x66, 0x09, - 0x00, 0x00, 0x64, 0x81, - 0x00, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x00, 0x12, + 0x1b, 0x04, 0x8a, 0xee, + 0x09, 0x00, 0x00, 0x64, + 0x81, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x32, 0x1e, 0x98, 0x10, 0x19, 0x11, 0x4c, 0x90, @@ -910,7 +915,7 @@ const debug_main_bitcode align(@sizeOf(u32)) = [_]u8 { 0x94, 0x41, 0x09, 0x14, 0x42, 0x41, 0x00, 0x00, 0xb1, 0x18, 0x00, 0x00, - 0xb9, 0x00, 0x00, 0x00, + 0xc1, 0x00, 0x00, 0x00, 0x33, 0x08, 0x80, 0x1c, 0xc4, 0xe1, 0x1c, 0x66, 0x14, 0x01, 0x3d, 0x88, @@ -1095,9 +1100,17 @@ const debug_main_bitcode align(@sizeOf(u32)) = [_]u8 { 0x48, 0x21, 0x15, 0x42, 0x61, 0x1e, 0xe6, 0x21, 0x1d, 0xce, 0xc1, 0x1d, - 0x52, 0x81, 0x14, 0x00, + 0x52, 0x81, 0x14, 0x66, + 0x4c, 0x67, 0x30, 0x0e, + 0xef, 0x20, 0x0f, 0xef, + 0xe0, 0x06, 0xef, 0x50, + 0x0f, 0xf4, 0x30, 0x0f, + 0xe9, 0x40, 0x0e, 0xe5, + 0xe0, 0x06, 0xe6, 0x20, + 0x0f, 0xe1, 0xd0, 0x0e, + 0xe5, 0x00, 0x00, 0x00, 0x79, 0x20, 0x00, 0x00, - 0x55, 0x00, 0x00, 0x00, + 0x6a, 0x00, 0x00, 0x00, 0x72, 0x1e, 0x48, 0x20, 0x43, 0x88, 0x0c, 0x19, 0x09, 0x72, 0x32, 0x48, @@ -1106,10 +1119,10 @@ const debug_main_bitcode align(@sizeOf(u32)) = [_]u8 { 0xa0, 0x10, 0x28, 0x64, 0x3c, 0x31, 0x32, 0x42, 0x8e, 0x90, 0x21, 0xa3, - 0xb8, 0x30, 0x60, 0x01, - 0xc6, 0x02, 0x06, 0x54, - 0x23, 0x29, 0x49, 0x72, - 0x34, 0x00, 0x00, 0x00, + 0xb8, 0x30, 0xf4, 0x01, + 0xc6, 0x02, 0x06, 0xe8, + 0xd0, 0x48, 0x4a, 0x92, + 0x1c, 0x0d, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x2e, 0x63, 0x2f, 0x68, 0x6f, 0x6d, 0x65, 0x2f, @@ -1126,8 +1139,29 @@ const debug_main_bitcode align(@sizeOf(u32)) = [_]u8 { 0x6e, 0x67, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x31, - 0x37, 0x2e, 0x30, 0x2e, - 0x36, 0x44, 0x77, 0x61, + 0x38, 0x2e, 0x31, 0x2e, + 0x36, 0x20, 0x28, 0x68, + 0x74, 0x74, 0x70, 0x73, + 0x3a, 0x2f, 0x2f, 0x67, + 0x69, 0x74, 0x68, 0x75, + 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x6c, 0x6c, + 0x76, 0x6d, 0x2f, 0x6c, + 0x6c, 0x76, 0x6d, 0x2d, + 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x2e, + 0x67, 0x69, 0x74, 0x20, + 0x62, 0x63, 0x65, 0x39, + 0x33, 0x39, 0x33, 0x32, + 0x39, 0x31, 0x61, 0x32, + 0x64, 0x61, 0x61, 0x38, + 0x30, 0x30, 0x36, 0x64, + 0x31, 0x64, 0x61, 0x36, + 0x32, 0x39, 0x61, 0x61, + 0x32, 0x37, 0x36, 0x35, + 0x65, 0x30, 0x30, 0x66, + 0x34, 0x65, 0x37, 0x30, + 0x29, 0x44, 0x77, 0x61, 0x72, 0x66, 0x20, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x65, @@ -1306,7 +1340,7 @@ const debug_main_bitcode align(@sizeOf(u32)) = [_]u8 { 0xe5, 0xff, 0xff, 0xff, 0x3f, 0xcc, 0x18, 0x14, 0xc1, 0x26, 0x06, 0x00, - 0xb0, 0xc4, 0x8c, 0x41, + 0xc0, 0xc4, 0x8c, 0x41, 0x31, 0x14, 0x62, 0x00, 0x00, 0x01, 0x31, 0x00, 0x02, 0x00, 0x00, 0x00, @@ -1320,7 +1354,7 @@ const debug_main_bitcode align(@sizeOf(u32)) = [_]u8 { 0x71, 0x20, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x32, 0x0e, 0x10, 0x22, - 0x84, 0x00, 0x8a, 0x04, + 0x84, 0x00, 0xac, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x65, 0x0c, 0x00, 0x00, @@ -1329,7 +1363,7 @@ const debug_main_bitcode align(@sizeOf(u32)) = [_]u8 { 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, + 0x2f, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, @@ -1338,9 +1372,9 @@ const debug_main_bitcode align(@sizeOf(u32)) = [_]u8 { 0x02, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1a, 0x00, 0x00, 0x00, - 0x13, 0x00, 0x00, 0x00, - 0x2d, 0x00, 0x00, 0x00, + 0x43, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, + 0x5b, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -1363,22 +1397,34 @@ const debug_main_bitcode align(@sizeOf(u32)) = [_]u8 { 0x08, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5d, 0x0c, 0x00, 0x00, - 0x10, 0x00, 0x00, 0x00, - 0x12, 0x03, 0x94, 0x73, + 0x1c, 0x00, 0x00, 0x00, + 0x12, 0x03, 0x94, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x6c, 0x6c, 0x76, 0x6d, 0x2e, 0x64, 0x62, 0x67, 0x2e, 0x64, 0x65, 0x63, 0x6c, 0x61, 0x72, 0x65, - 0x31, 0x37, 0x2e, 0x30, - 0x2e, 0x36, 0x78, 0x38, - 0x36, 0x5f, 0x36, 0x34, - 0x2d, 0x70, 0x63, 0x2d, - 0x6c, 0x69, 0x6e, 0x75, - 0x78, 0x2d, 0x67, 0x6e, - 0x75, 0x6d, 0x61, 0x69, - 0x6e, 0x2e, 0x63, 0x00, + 0x31, 0x38, 0x2e, 0x31, + 0x2e, 0x36, 0x20, 0x62, + 0x63, 0x65, 0x39, 0x33, + 0x39, 0x33, 0x32, 0x39, + 0x31, 0x61, 0x32, 0x64, + 0x61, 0x61, 0x38, 0x30, + 0x30, 0x36, 0x64, 0x31, + 0x64, 0x61, 0x36, 0x32, + 0x39, 0x61, 0x61, 0x32, + 0x37, 0x36, 0x35, 0x65, + 0x30, 0x30, 0x66, 0x34, + 0x65, 0x37, 0x30, 0x78, + 0x38, 0x36, 0x5f, 0x36, + 0x34, 0x2d, 0x75, 0x6e, + 0x6b, 0x6e, 0x6f, 0x77, + 0x6e, 0x2d, 0x6c, 0x69, + 0x6e, 0x75, 0x78, 0x2d, + 0x67, 0x6e, 0x75, 0x6d, + 0x61, 0x69, 0x6e, 0x2e, + 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; @@ -2226,8 +2272,13 @@ const Bitcode = struct { } fn compute_bits_required_for_type_indices(writer: *Writer) u32 { - const n = (writer.get_type_count() + 1); - return 32 - @ctz(n); + if (true) { + return std.math.log2_int_ceil(u32, writer.get_type_count() + 1); + } else { + const n = (writer.get_type_count() + 1); + const result = 32 - @ctz(n); + return result; + } } fn get_byte_slice(writer: *Writer) []const u8 { @@ -2247,10 +2298,10 @@ const Bitcode = struct { if (raw) { const module_block align(4) = [_]u8 { 0x21, 0x0c, 0x00, 0x00, - 0x55, 0x02, 0x00, 0x00, + 0x77, 0x02, 0x00, 0x00, 0x0b, 0x02, 0x21, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x16, 0x00, 0x00, 0x00, + 0x17, 0x00, 0x00, 0x00, 0x07, 0x81, 0x23, 0x91, 0x41, 0xc8, 0x04, 0x49, 0x06, 0x10, 0x32, 0x39, @@ -2269,10 +2320,11 @@ const Bitcode = struct { 0xb1, 0x14, 0x20, 0x43, 0x46, 0x88, 0x20, 0xc9, 0x01, 0x32, 0x32, 0x84, - 0x18, 0x2a, 0x28, 0x2a, - 0x90, 0x31, 0x7c, 0xb0, - 0x5c, 0x91, 0x20, 0xc3, - 0xc8, 0x00, 0x00, 0x00, + 0x58, 0x0e, 0x90, 0x91, + 0x21, 0x44, 0x90, 0xa1, + 0x82, 0xa2, 0x02, 0x19, + 0xc3, 0x07, 0xcb, 0x15, + 0x09, 0x32, 0x8c, 0x0c, 0x89, 0x20, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x22, 0x66, 0x04, 0x10, @@ -2287,142 +2339,146 @@ const Bitcode = struct { 0x01, 0x18, 0x08, 0x28, 0xc4, 0x48, 0x02, 0x00, 0x51, 0x18, 0x00, 0x00, - 0x52, 0x00, 0x00, 0x00, - 0x1b, 0x58, 0x23, 0xf8, + 0x51, 0x00, 0x00, 0x00, + 0x1b, 0x54, 0x23, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x01, 0x70, 0x00, 0x09, - 0x28, 0x03, 0x80, 0x0b, - 0xc2, 0x40, 0x20, 0xcc, - 0x41, 0x1e, 0xc2, 0xa1, - 0x1d, 0xca, 0xa1, 0x0d, - 0xe0, 0xe1, 0x1d, 0xd2, - 0xc1, 0x1d, 0xe8, 0xa1, - 0x1c, 0xe4, 0x01, 0x08, - 0x07, 0x76, 0x60, 0x07, - 0x80, 0x68, 0x87, 0x74, - 0x70, 0x87, 0x36, 0x60, - 0x87, 0x72, 0x38, 0x87, - 0x70, 0x60, 0x87, 0x36, - 0xb0, 0x87, 0x72, 0x18, - 0x07, 0x7a, 0x78, 0x07, - 0x79, 0x68, 0x83, 0x7b, - 0x48, 0x07, 0x72, 0xa0, - 0x07, 0x74, 0x00, 0xe0, - 0x00, 0x20, 0xdc, 0xe1, - 0x1d, 0xda, 0x80, 0x1e, - 0xe4, 0x21, 0x1c, 0xe0, - 0x01, 0x1e, 0xd2, 0xc1, - 0x1d, 0xce, 0xa1, 0x0d, - 0xda, 0x21, 0x1c, 0xe8, - 0x01, 0x1d, 0x00, 0x7a, - 0x90, 0x87, 0x7a, 0x28, - 0x07, 0x80, 0x98, 0x07, - 0x7a, 0x08, 0x87, 0x71, - 0x58, 0x87, 0x36, 0x80, - 0x07, 0x79, 0x78, 0x07, - 0x7a, 0x28, 0x87, 0x71, - 0xa0, 0x87, 0x77, 0x90, - 0x87, 0x36, 0x10, 0x87, - 0x7a, 0x30, 0x07, 0x73, - 0x28, 0x07, 0x79, 0x68, - 0x83, 0x79, 0x48, 0x07, - 0x7d, 0x28, 0x07, 0x00, - 0x0f, 0x00, 0x82, 0x1e, - 0xc2, 0x41, 0x1e, 0xce, - 0xa1, 0x1c, 0xe8, 0xa1, - 0x0d, 0xc6, 0x01, 0x1e, - 0xea, 0x01, 0xc0, 0x07, - 0x3c, 0xb0, 0x83, 0x36, - 0xb0, 0x03, 0x3a, 0x00, - 0x08, 0x7a, 0x08, 0x07, - 0x79, 0x38, 0x87, 0x72, - 0xa0, 0x87, 0x36, 0x30, - 0x87, 0x72, 0x08, 0x07, - 0x7a, 0xa8, 0x07, 0x79, - 0x28, 0x87, 0x79, 0x00, - 0xd6, 0x60, 0x1c, 0xda, - 0xe1, 0x1d, 0xec, 0x81, - 0x0d, 0xd6, 0x60, 0x1c, - 0xf0, 0x01, 0x0f, 0xd8, - 0x60, 0x0d, 0xcc, 0x01, - 0x1f, 0xe6, 0x41, 0x1e, - 0xd8, 0x60, 0x0d, 0xda, - 0xa1, 0x1d, 0xf0, 0x81, - 0x0d, 0xd6, 0x60, 0x1e, - 0xe6, 0xa1, 0x1c, 0xd8, - 0x60, 0x0d, 0xe6, 0x61, - 0x1e, 0xca, 0x41, 0x0e, - 0xd8, 0x60, 0x0d, 0xf0, - 0x01, 0x0f, 0xee, 0x00, - 0x20, 0xe8, 0xa1, 0x1e, - 0xdc, 0xa1, 0x1c, 0xda, - 0x60, 0x1c, 0xe0, 0xa1, - 0x1e, 0x80, 0x73, 0x28, - 0x07, 0x77, 0x28, 0x07, - 0x79, 0x48, 0x87, 0x71, - 0x00, 0x36, 0x10, 0x42, - 0x00, 0x90, 0xc2, 0x06, - 0x62, 0x10, 0x00, 0x52, - 0xd8, 0x10, 0x11, 0xff, - 0xff, 0xff, 0xff, 0x3f, - 0x00, 0xa7, 0x00, 0xf8, - 0x01, 0xf0, 0x07, 0x80, - 0x04, 0xd4, 0x01, 0xd0, - 0x07, 0x81, 0x2d, 0x00, - 0x00, 0x00, 0x00, 0x00, + 0x28, 0x83, 0x20, 0x0c, + 0x04, 0xc2, 0x1c, 0xe4, + 0x21, 0x1c, 0xda, 0xa1, + 0x1c, 0xda, 0x00, 0x1e, + 0xde, 0x21, 0x1d, 0xdc, + 0x81, 0x1e, 0xca, 0x41, + 0x1e, 0x80, 0x70, 0x60, + 0x07, 0x76, 0x00, 0x88, + 0x76, 0x48, 0x07, 0x77, + 0x68, 0x03, 0x76, 0x28, + 0x87, 0x73, 0x08, 0x07, + 0x76, 0x68, 0x03, 0x7b, + 0x28, 0x87, 0x71, 0xa0, + 0x87, 0x77, 0x90, 0x87, + 0x36, 0xb8, 0x87, 0x74, + 0x20, 0x07, 0x7a, 0x40, + 0x07, 0x00, 0x0e, 0x00, + 0xc2, 0x1d, 0xde, 0xa1, + 0x0d, 0xe8, 0x41, 0x1e, + 0xc2, 0x01, 0x1e, 0xe0, + 0x21, 0x1d, 0xdc, 0xe1, + 0x1c, 0xda, 0xa0, 0x1d, + 0xc2, 0x81, 0x1e, 0xd0, + 0x01, 0xa0, 0x07, 0x79, + 0xa8, 0x87, 0x72, 0x00, + 0x88, 0x79, 0xa0, 0x87, + 0x70, 0x18, 0x87, 0x75, + 0x68, 0x03, 0x78, 0x90, + 0x87, 0x77, 0xa0, 0x87, + 0x72, 0x18, 0x07, 0x7a, + 0x78, 0x07, 0x79, 0x68, + 0x03, 0x71, 0xa8, 0x07, + 0x73, 0x30, 0x87, 0x72, + 0x90, 0x87, 0x36, 0x98, + 0x87, 0x74, 0xd0, 0x87, + 0x72, 0x00, 0xf0, 0x00, + 0x20, 0xe8, 0x21, 0x1c, + 0xe4, 0xe1, 0x1c, 0xca, + 0x81, 0x1e, 0xda, 0x60, + 0x1c, 0xe0, 0xa1, 0x1e, + 0x00, 0x7c, 0xc0, 0x03, + 0x3b, 0x68, 0x03, 0x3b, + 0xa0, 0x03, 0x80, 0xa0, + 0x87, 0x70, 0x90, 0x87, + 0x73, 0x28, 0x07, 0x7a, + 0x68, 0x03, 0x73, 0x28, + 0x87, 0x70, 0xa0, 0x87, + 0x7a, 0x90, 0x87, 0x72, + 0x98, 0x07, 0x60, 0x0d, + 0xc6, 0xa1, 0x1d, 0xde, + 0xc1, 0x1e, 0xd8, 0x60, + 0x0d, 0xc6, 0x01, 0x1f, + 0xf0, 0x80, 0x0d, 0xd6, + 0xc0, 0x1c, 0xf0, 0x61, + 0x1e, 0xe4, 0x81, 0x0d, + 0xd6, 0xa0, 0x1d, 0xda, + 0x01, 0x1f, 0xd8, 0x60, + 0x0d, 0xe6, 0x61, 0x1e, + 0xca, 0x81, 0x0d, 0xd6, + 0x60, 0x1e, 0xe6, 0xa1, + 0x1c, 0xe4, 0x80, 0x0d, + 0xd6, 0x00, 0x1f, 0xf0, + 0xe0, 0x0e, 0x00, 0x82, + 0x1e, 0xea, 0xc1, 0x1d, + 0xca, 0xa1, 0x0d, 0xc6, + 0x01, 0x1e, 0xea, 0x01, + 0x38, 0x87, 0x72, 0x70, + 0x87, 0x72, 0x90, 0x87, + 0x74, 0x18, 0x07, 0x60, + 0x03, 0x21, 0x04, 0x00, + 0x29, 0x6c, 0x20, 0x06, + 0x01, 0x20, 0x85, 0x0d, + 0x11, 0xf1, 0xff, 0xff, + 0xff, 0xff, 0x03, 0x70, + 0x0a, 0x80, 0x1f, 0x00, + 0x7f, 0x00, 0x48, 0x40, + 0x1d, 0x00, 0x7d, 0x10, + 0xd8, 0x02, 0x00, 0x00, 0x49, 0x18, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x86, 0x40, 0x18, 0x26, 0x04, 0x04, 0x00, - 0x13, 0x26, 0x7c, 0xc0, + 0x13, 0x30, 0x7c, 0xc0, 0x03, 0x3b, 0xf8, 0x05, 0x3b, 0xa0, 0x83, 0x36, - 0x80, 0x87, 0x71, 0x68, - 0x03, 0x76, 0x48, 0x07, - 0x77, 0xa8, 0x07, 0x7c, - 0x68, 0x83, 0x73, 0x70, - 0x87, 0x7a, 0xd8, 0x60, - 0x0a, 0xe5, 0xd0, 0x06, - 0xed, 0xa0, 0x07, 0xe5, + 0xa8, 0x07, 0x77, 0x58, + 0x07, 0x77, 0x78, 0x87, + 0x7b, 0x70, 0x87, 0x36, + 0x60, 0x87, 0x74, 0x70, + 0x87, 0x7a, 0xc0, 0x87, + 0x36, 0x38, 0x07, 0x77, + 0xa8, 0x87, 0x0d, 0xaf, + 0x50, 0x0e, 0x6d, 0xd0, + 0x0e, 0x7a, 0x50, 0x0e, + 0x6d, 0x00, 0x0f, 0x72, + 0x70, 0x07, 0x70, 0xa0, + 0x07, 0x73, 0x20, 0x07, + 0x7a, 0x30, 0x07, 0x72, 0xd0, 0x06, 0xf0, 0x20, - 0x07, 0x77, 0x00, 0x07, + 0x07, 0x77, 0x10, 0x07, 0x7a, 0x30, 0x07, 0x72, 0xa0, 0x07, 0x73, 0x20, 0x07, 0x6d, 0x00, 0x0f, - 0x72, 0x70, 0x07, 0x71, - 0xa0, 0x07, 0x73, 0x20, - 0x07, 0x7a, 0x30, 0x07, - 0x72, 0xd0, 0x06, 0xf0, - 0x20, 0x07, 0x77, 0x20, + 0x72, 0x70, 0x07, 0x72, + 0xa0, 0x07, 0x76, 0x40, 0x07, 0x7a, 0x60, 0x07, - 0x74, 0xa0, 0x07, 0x76, - 0x40, 0x07, 0x6d, 0x90, - 0x0e, 0x76, 0x40, 0x07, - 0x7a, 0x60, 0x07, 0x74, - 0xd0, 0x06, 0xe6, 0x80, - 0x07, 0x70, 0xa0, 0x07, - 0x71, 0x20, 0x07, 0x78, - 0xd0, 0x06, 0xee, 0x80, - 0x07, 0x7a, 0x10, 0x07, - 0x76, 0xa0, 0x07, 0x73, - 0x20, 0x07, 0x7a, 0x60, - 0x07, 0x74, 0xd0, 0x06, - 0xb3, 0x10, 0x07, 0x72, - 0x80, 0x07, 0x1a, 0x21, - 0x0c, 0x69, 0x30, 0x00, - 0xd2, 0xf8, 0xc2, 0x90, - 0x0a, 0x20, 0x04, 0x00, - 0x00, 0x02, 0x00, 0x00, + 0x74, 0xd0, 0x06, 0xe9, + 0x60, 0x07, 0x74, 0xa0, + 0x07, 0x76, 0x40, 0x07, + 0x6d, 0x90, 0x0e, 0x71, + 0x20, 0x07, 0x78, 0xa0, + 0x07, 0x71, 0x20, 0x07, + 0x78, 0xd0, 0x06, 0xe6, + 0x80, 0x07, 0x70, 0xa0, + 0x07, 0x71, 0x20, 0x07, + 0x78, 0xd0, 0x06, 0xee, + 0x80, 0x07, 0x7a, 0x10, + 0x07, 0x76, 0xa0, 0x07, + 0x73, 0x20, 0x07, 0x7a, + 0x60, 0x07, 0x74, 0xd0, + 0x06, 0xb3, 0x10, 0x07, + 0x72, 0x80, 0x07, 0x1a, + 0x21, 0x0c, 0x69, 0x30, + 0x00, 0xd2, 0xf8, 0xc2, + 0x90, 0x0a, 0x20, 0x04, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x08, 0x00, 0x02, - 0x18, 0x52, 0x11, 0x50, - 0x01, 0x04, 0x80, 0x00, + 0x00, 0x00, 0x08, 0x00, + 0x02, 0x18, 0x52, 0x11, + 0x50, 0x01, 0x04, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x40, 0x00, 0x12, 0x1b, - 0x04, 0x8a, 0x66, 0x09, - 0x00, 0x00, 0x64, 0x81, - 0x00, 0x00, 0x00, 0x00, + 0x00, 0x40, 0x00, 0x12, + 0x1b, 0x04, 0x8a, 0xee, + 0x09, 0x00, 0x00, 0x64, + 0x81, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x32, 0x1e, 0x98, 0x10, 0x19, 0x11, 0x4c, 0x90, @@ -2432,7 +2488,7 @@ const Bitcode = struct { 0x94, 0x41, 0x09, 0x14, 0x42, 0x41, 0x00, 0x00, 0xb1, 0x18, 0x00, 0x00, - 0xb9, 0x00, 0x00, 0x00, + 0xc1, 0x00, 0x00, 0x00, 0x33, 0x08, 0x80, 0x1c, 0xc4, 0xe1, 0x1c, 0x66, 0x14, 0x01, 0x3d, 0x88, @@ -2617,9 +2673,17 @@ const Bitcode = struct { 0x48, 0x21, 0x15, 0x42, 0x61, 0x1e, 0xe6, 0x21, 0x1d, 0xce, 0xc1, 0x1d, - 0x52, 0x81, 0x14, 0x00, + 0x52, 0x81, 0x14, 0x66, + 0x4c, 0x67, 0x30, 0x0e, + 0xef, 0x20, 0x0f, 0xef, + 0xe0, 0x06, 0xef, 0x50, + 0x0f, 0xf4, 0x30, 0x0f, + 0xe9, 0x40, 0x0e, 0xe5, + 0xe0, 0x06, 0xe6, 0x20, + 0x0f, 0xe1, 0xd0, 0x0e, + 0xe5, 0x00, 0x00, 0x00, 0x79, 0x20, 0x00, 0x00, - 0x55, 0x00, 0x00, 0x00, + 0x6a, 0x00, 0x00, 0x00, 0x72, 0x1e, 0x48, 0x20, 0x43, 0x88, 0x0c, 0x19, 0x09, 0x72, 0x32, 0x48, @@ -2628,10 +2692,10 @@ const Bitcode = struct { 0xa0, 0x10, 0x28, 0x64, 0x3c, 0x31, 0x32, 0x42, 0x8e, 0x90, 0x21, 0xa3, - 0xb8, 0x30, 0x60, 0x01, - 0xc6, 0x02, 0x06, 0x54, - 0x23, 0x29, 0x49, 0x72, - 0x34, 0x00, 0x00, 0x00, + 0xb8, 0x30, 0xf4, 0x01, + 0xc6, 0x02, 0x06, 0xe8, + 0xd0, 0x48, 0x4a, 0x92, + 0x1c, 0x0d, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x2e, 0x63, 0x2f, 0x68, 0x6f, 0x6d, 0x65, 0x2f, @@ -2648,8 +2712,29 @@ const Bitcode = struct { 0x6e, 0x67, 0x20, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x20, 0x31, - 0x37, 0x2e, 0x30, 0x2e, - 0x36, 0x44, 0x77, 0x61, + 0x38, 0x2e, 0x31, 0x2e, + 0x36, 0x20, 0x28, 0x68, + 0x74, 0x74, 0x70, 0x73, + 0x3a, 0x2f, 0x2f, 0x67, + 0x69, 0x74, 0x68, 0x75, + 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x6c, 0x6c, + 0x76, 0x6d, 0x2f, 0x6c, + 0x6c, 0x76, 0x6d, 0x2d, + 0x70, 0x72, 0x6f, 0x6a, + 0x65, 0x63, 0x74, 0x2e, + 0x67, 0x69, 0x74, 0x20, + 0x62, 0x63, 0x65, 0x39, + 0x33, 0x39, 0x33, 0x32, + 0x39, 0x31, 0x61, 0x32, + 0x64, 0x61, 0x61, 0x38, + 0x30, 0x30, 0x36, 0x64, + 0x31, 0x64, 0x61, 0x36, + 0x32, 0x39, 0x61, 0x61, + 0x32, 0x37, 0x36, 0x35, + 0x65, 0x30, 0x30, 0x66, + 0x34, 0x65, 0x37, 0x30, + 0x29, 0x44, 0x77, 0x61, 0x72, 0x66, 0x20, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x65, @@ -2828,7 +2913,7 @@ const Bitcode = struct { 0xe5, 0xff, 0xff, 0xff, 0x3f, 0xcc, 0x18, 0x14, 0xc1, 0x26, 0x06, 0x00, - 0xb0, 0xc4, 0x8c, 0x41, + 0xc0, 0xc4, 0x8c, 0x41, 0x31, 0x14, 0x62, 0x00, 0x00, 0x01, 0x31, 0x00, 0x02, 0x00, 0x00, 0x00, @@ -2842,7 +2927,7 @@ const Bitcode = struct { 0x71, 0x20, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x32, 0x0e, 0x10, 0x22, - 0x84, 0x00, 0x8a, 0x04, + 0x84, 0x00, 0xac, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; @@ -2915,7 +3000,7 @@ const Bitcode = struct { 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, - 0x06, 0x00, 0x00, 0x00, + 0x2f, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, @@ -2924,9 +3009,9 @@ const Bitcode = struct { 0x02, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1a, 0x00, 0x00, 0x00, - 0x13, 0x00, 0x00, 0x00, - 0x2d, 0x00, 0x00, 0x00, + 0x43, 0x00, 0x00, 0x00, + 0x18, 0x00, 0x00, 0x00, + 0x5b, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, @@ -2956,22 +3041,34 @@ const Bitcode = struct { // TODO: const strtab_block align(4) = .{ 0x5d, 0x0c, 0x00, 0x00, - 0x10, 0x00, 0x00, 0x00, - 0x12, 0x03, 0x94, 0x73, + 0x1c, 0x00, 0x00, 0x00, + 0x12, 0x03, 0x94, 0xe1, 0x00, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x6c, 0x6c, 0x76, 0x6d, 0x2e, 0x64, 0x62, 0x67, 0x2e, 0x64, 0x65, 0x63, 0x6c, 0x61, 0x72, 0x65, - 0x31, 0x37, 0x2e, 0x30, - 0x2e, 0x36, 0x78, 0x38, - 0x36, 0x5f, 0x36, 0x34, - 0x2d, 0x70, 0x63, 0x2d, - 0x6c, 0x69, 0x6e, 0x75, - 0x78, 0x2d, 0x67, 0x6e, - 0x75, 0x6d, 0x61, 0x69, - 0x6e, 0x2e, 0x63, 0x00, + 0x31, 0x38, 0x2e, 0x31, + 0x2e, 0x36, 0x20, 0x62, + 0x63, 0x65, 0x39, 0x33, + 0x39, 0x33, 0x32, 0x39, + 0x31, 0x61, 0x32, 0x64, + 0x61, 0x61, 0x38, 0x30, + 0x30, 0x36, 0x64, 0x31, + 0x64, 0x61, 0x36, 0x32, + 0x39, 0x61, 0x61, 0x32, + 0x37, 0x36, 0x35, 0x65, + 0x30, 0x30, 0x66, 0x34, + 0x65, 0x37, 0x30, 0x78, + 0x38, 0x36, 0x5f, 0x36, + 0x34, 0x2d, 0x75, 0x6e, + 0x6b, 0x6e, 0x6f, 0x77, + 0x6e, 0x2d, 0x6c, 0x69, + 0x6e, 0x75, 0x78, 0x2d, + 0x67, 0x6e, 0x75, 0x6d, + 0x61, 0x69, 0x6e, 0x2e, + 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; writer.append_bytes(&strtab_block); @@ -3219,7 +3316,6 @@ const Bitcode = struct { const end = writer.buffer.length * 4; const expected = debug_main_bitcode[start..end]; const have = writer.get_byte_slice()[start..end]; - std.debug.print("Start: {}\n", .{start}); std.testing.expectEqualSlices(u8, expected, have) catch unreachable; } @@ -3246,10 +3342,15 @@ const Bitcode = struct { .parameter_types = &.{ 4, 4, 4 }, }, } }; + comptime { + assert(dummy_types.len == 6); + } fn write_type_table(writer: *Writer) void { writer.enter_subblock(.type, 4); + const start = writer.buffer.length * 4; + var type_values = std.BoundedArray(u64, 64){}; // TODO: compute @@ -3315,14 +3416,13 @@ const Bitcode = struct { writer.emit_record(u64, @intFromEnum(TypeCode.num_entry), type_values.constSlice(), 0); type_values.resize(0) catch unreachable; - assert(writer.get_type_count() == 5); - const EmissionInfo = struct{ abbreviation: u32 = 0, code: u32 = 0, }; for (dummy_types) |ty| { + // std.debug.print("Ty: {s}\n", .{@tagName(ty)}); const emission_info: EmissionInfo = switch (ty) { .pointer => b: { type_values.appendAssumeCapacity(address_space); @@ -3331,8 +3431,8 @@ const Bitcode = struct { .code = @intFromEnum(TypeCode.opaque_pointer), }; }, - .integer => b: { - type_values.appendAssumeCapacity(0); + .integer => |bit_count| b: { + type_values.appendAssumeCapacity(bit_count); break :b .{ .code = @intFromEnum(TypeCode.integer), }; @@ -3361,6 +3461,12 @@ const Bitcode = struct { } writer.exit_block(); + + const end = writer.buffer.length * 4; + const expected = debug_main_bitcode[start..end]; + const have = writer.get_byte_slice()[start..end]; + std.debug.print("Start: {}\n", .{start}); + std.testing.expectEqualSlices(u8, expected, have) catch unreachable; } const DummyAttribute = union(enum) { @@ -3387,7 +3493,6 @@ const Bitcode = struct { .{ .enumeration = .no_inline }, .{ .enumeration = .no_unwind }, .{ .enumeration = .optimize_none }, - .{ .enumeration = .stack_protect_strong }, .{ .enumeration = .uw_table }, .{ .string = .{ @@ -3778,6 +3883,9 @@ const Bitcode = struct { } fn write_raw(writer: *Writer, value: u32) void { + // std.debug.print("[{}-{}] Flushing buffer 0x{x}\n", .{writer.buffer.length, writer.buffer.length * 4, value}); + // if (writer.buffer.length == (152 + 32) / 4 - 1) @breakpoint(); + // if (writer.buffer.length == (152 + 32) / 4) @breakpoint(); _ = writer.buffer.append(value); } @@ -3792,6 +3900,7 @@ const Bitcode = struct { } fn emit(writer: *Writer, value: u32, bit_count: u32) void { + // std.debug.print("ASK: [[32-B-IDX[0x{x}] 8-bit IDX[{}] - CVAL=0x{x} - CBIT={}]] Writing 0x{x} for {} bits\n", .{writer.buffer.length, writer.buffer.length * 4, writer.current_value, writer.current_bit, value, bit_count}); assert(bit_count > 0 and bit_count <= 32); assert(value & ~(~@as(u32, 0) >> @as(u5, @intCast(32 - bit_count))) == 0); const shifted = value << @as(u5, @intCast(writer.current_bit)); @@ -4109,7 +4218,13 @@ const Bitcode = struct { fn write_bitcode() void { var writer = Bitcode.Writer{}; - writer.write(); + if (false) { + // const file = std.fs.cwd().readFileAlloc(std.heap.page_allocator, "/home/david/clang18.ll", 0xfffffffff) catch unreachable; + // Bitcode.print_hex_slice(file); + // writer.append_bytes(file); + } else { + writer.write(); + } const context = LLVM.Context.create();