zig icon indicating copy to clipboard operation
zig copied to clipboard

x86_64: packed semantics are not robust

Open nektro opened this issue 10 months ago • 1 comments

Zig Version

0.14.0-dev.3224+5ab511307

Steps to Reproduce and Observed Behavior

const std = @import("std");

test {
    var s = S.init();
    _ = &s;
}

const S = packed struct {
    a: u48,
    b: u80,

    pub fn init() S {
        var a: u48 = 0;
        var b: u80 = 0;
        _ = .{ &a, &b };
        return S{
            .a = a,
            .b = b,
        };
    }
};
$ zig-master test ./test.zig -fno-llvm -fno-lld
test.zig:12:9: error: TODO airAggregateInit implement packed structs with large fields
    pub fn init() S {
    ~~~~^~~~~~~~~~~

Expected Behavior

all tests passed

nektro avatar Feb 16 '25 21:02 nektro

Instruction selection of bitcast, load, store, store_safe, struct_field_val, and aggregate_init on packed pointers/fields need to be rewritten in the self-hosted x86_64 backend.

jacobly0 avatar Jun 01 '25 02:06 jacobly0