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

Zig workaround: don't use packed structs larger than 128 bits. #532

Merged
merged 2 commits into from
Nov 2, 2023

Conversation

ehaas
Copy link
Collaborator

@ehaas ehaas commented Nov 1, 2023

The C backend currently can't handle them. This is the only thing preventing the CBE from being able to produce valid C code from aro (I have not verified that the produced code actually works, however).

If the produced code works as expected, this will unblock ziglang/zig#17771

Does Relocation even need to be packed? It looks like we aren't bitcasting it, and it's 32 bytes regardless of whether it's packed or not (the bitsize is 184 when packed vs 256 when not packed, but if we're only using it in ArrayListUnmanaged then that shouldn't matter, right?)

Options goes from 64 bytes -> 104 bytes when not packed, but we only have 1 of those per Compilation.

@Vexu
Copy link
Owner

Vexu commented Nov 2, 2023

I removed the TODO comment since the options struct was originally created using the original packed struct semantics which didn't involve bit manipulation of 512 bit integers so the tiny memory increase should be negated by smaller code size.

@Vexu Vexu merged commit 87b6124 into Vexu:master Nov 2, 2023
@ehaas ehaas deleted the cbe-workaround branch November 2, 2023 15:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants