Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Native backend behavior with packed struct equality not matching llvm #22990

Open
actondev opened this issue Feb 23, 2025 · 0 comments
Open

Native backend behavior with packed struct equality not matching llvm #22990

actondev opened this issue Feb 23, 2025 · 0 comments
Labels
bug Observed behavior contradicts documented or intended behavior

Comments

@actondev
Copy link

Zig Version

0.14.0-dev.3298+6fe1993d8

Steps to Reproduce and Observed Behavior

zig test shortcuts2.zig -fno-llvm fails while zig test shortcuts2.zig passes. See in the code the 2 relevant // TODO.. comments.

Long story short, comparing 2 packed structs with std.meta.eql fails with -fno-llvm, while doing a manual

const backing = @typeInfo(Self).@"struct".backing_integer.?;
return @as(backing, @bitCast(self)) == @as(backing, @bitCast(other));

passes.

Also, in a TODO comments, I noticed that when removing a field from another struct, not of compared one, the -fno-llvm passes !?

Pardon the long reproduction scenario, but when I tried to do something slimmed down I couldn't reproduce the behacior.

PS: apparently github doesn't allow attaching .zig files..

shortcuts2.txt

Expected Behavior

Should have same behavior

@actondev actondev added the bug Observed behavior contradicts documented or intended behavior label Feb 23, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Observed behavior contradicts documented or intended behavior
Projects
None yet
Development

No branches or pull requests

1 participant