astgen: fix container_field extra_data guard, enable aes_ocb, SmpAllocator, Mir

The AST_NODE_CONTAINER_FIELD case in structDeclInner had an incorrect guard
`if (nd.rhs != 0)` before reading align/value from extra_data. Since rhs is
an extra_data index (not a node), 0 is a valid index. Removing the guard
fixes 3-5 missing instructions in files where the first extra_data entry
happens to be a container_field's align+value.

Also fix clang-format: addBuiltinValue arg wrapping, for-loop semicolons.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-17 06:56:06 +00:00
parent 80dead078d
commit c1bba6d5c2
2 changed files with 8 additions and 10 deletions

View File

@@ -6493,8 +6493,8 @@ static uint32_t ptrTypeExpr(GenZir* gz, Scope* scope, uint32_t node) {
ag->source_line = saved_source_line;
ag->source_column = saved_source_column;
// AstGen.zig:3880-3881
uint32_t addrspace_ty = addBuiltinValue(gz, addrspace_node,
ZIR_BUILTIN_VALUE_ADDRESS_SPACE);
uint32_t addrspace_ty = addBuiltinValue(
gz, addrspace_node, ZIR_BUILTIN_VALUE_ADDRESS_SPACE);
ResultLoc asrl = { .tag = RL_COERCED_TY,
.data = addrspace_ty,
.src_node = 0,
@@ -8139,7 +8139,7 @@ static bool nodeIsTriviallyZero(const Ast* tree, uint32_t node) {
// Handle prefixed forms: 0b, 0o, 0x (case insensitive).
if (c == 'b' || c == 'B' || c == 'o' || c == 'O' || c == 'x' || c == 'X') {
// Check that all remaining digits are '0' or '_'.
for (uint32_t i = tok_start + 2; ; i++) {
for (uint32_t i = tok_start + 2;; i++) {
char d = source[i];
if (d == '0' || d == '_')
continue;
@@ -17514,10 +17514,8 @@ static uint32_t structDeclInner(AstGenCtx* ag, GenZir* gz, Scope* scope,
break;
case AST_NODE_CONTAINER_FIELD:
// lhs = type_expr, rhs = extra index to {align, value}
if (nd.rhs != 0) {
align_node = tree->extra_data.arr[nd.rhs];
value_node = tree->extra_data.arr[nd.rhs + 1];
}
align_node = tree->extra_data.arr[nd.rhs];
value_node = tree->extra_data.arr[nd.rhs + 1];
break;
default:
break;

View File

@@ -506,7 +506,7 @@ const corpus_files = .{
"../lib/std/crypto/aes/aesni.zig",
"../lib/std/crypto/aes/armcrypto.zig",
"../lib/std/crypto/aes_gcm.zig",
//"../lib/std/crypto/aes_ocb.zig",
"../lib/std/crypto/aes_ocb.zig",
"../lib/std/crypto/aes/soft.zig",
"../lib/std/crypto/aes.zig",
"../lib/std/crypto/argon2.zig",
@@ -644,7 +644,7 @@ const corpus_files = .{
"../lib/std/heap/memory_pool.zig",
"../lib/std/heap/PageAllocator.zig",
"../lib/std/heap/sbrk_allocator.zig",
//"../lib/std/heap/SmpAllocator.zig",
"../lib/std/heap/SmpAllocator.zig",
"../lib/std/heap/ThreadSafeAllocator.zig",
"../lib/std/heap/WasmAllocator.zig",
"../lib/std/heap.zig",
@@ -1008,7 +1008,7 @@ const corpus_files = .{
//"../src/codegen/aarch64/Assemble.zig",
"../src/codegen/aarch64/Disassemble.zig",
"../src/codegen/aarch64/encoding.zig",
//"../src/codegen/aarch64/Mir.zig",
"../src/codegen/aarch64/Mir.zig",
"../src/codegen/aarch64/Select.zig",
"../src/codegen/aarch64.zig",
"../src/codegen/arm/abi.zig",