diff --git a/src/Sema.zig b/src/Sema.zig index 72a5cb518f68..983fb7cffe47 100644 --- a/src/Sema.zig +++ b/src/Sema.zig @@ -22590,12 +22590,14 @@ fn tupleFieldPtr( .@"addrspace" = tuple_ptr_ty.ptrAddressSpace(), }); - if (tuple_ty.structFieldValueComptime(field_index)) |default_val| { - const val = try Value.Tag.comptime_field_ptr.create(sema.arena, .{ - .field_ty = field_ty, - .field_val = default_val, - }); - return sema.addConstant(ptr_field_ty, val); + if(try sema.typeRequiresComptime(tuple_fields.types[field_index])) { + if (tuple_ty.structFieldValueComptime(field_index)) |default_val| { + const val = try Value.Tag.comptime_field_ptr.create(sema.arena, .{ + .field_ty = field_ty, + .field_val = default_val, + }); + return sema.addConstant(ptr_field_ty, val); + } } if (try sema.resolveMaybeUndefVal(block, tuple_ptr_src, tuple_ptr)) |tuple_ptr_val| { diff --git a/src/codegen/llvm.zig b/src/codegen/llvm.zig index b2b9d7de2cb2..60d1ee46247e 100644 --- a/src/codegen/llvm.zig +++ b/src/codegen/llvm.zig @@ -9816,7 +9816,7 @@ fn llvmFieldIndex( const tuple = ty.tupleFields(); var llvm_field_index: c_uint = 0; for (tuple.types) |field_ty, i| { - if (tuple.values[i].tag() != .unreachable_value) continue; + if (tuple.values[i].tag() != .unreachable_value or !field_ty.hasRuntimeBitsIgnoreComptime()) continue; const field_align = field_ty.abiAlignment(target); big_align = @maximum(big_align, field_align);