parse,check,type,wwi: @packed struct attribute, both stages (#51)
Hare/harec @packed struct layout: no inter-field or trailing padding, align =
max field align (NOT forced to 1) — matches harec type_store.c + types.c:621
(packed{u8,u64}=size 9/align 8). Parser consumes inline @packed (loud-rejects
unknown struct attrs, both stages); layout gates padding on !packed; cstage
type_eq enforces packed type-distinctness; the .wwi producer round-trips
"struct @packed {". wwstage sets slotsize=size for packed so its composite-ABI
copy matches cstage byte-for-byte. cstage identity is faithful; wwstage identity
rides the deferred #224 nominal-resolvealias arc (#108). Both stages byte-id;
447 tests pass.
This commit is contained in:
@@ -252,7 +252,9 @@ wwi_type(FILE *of, Node *t)
|
||||
wwi_type(of, t->lhs);
|
||||
break;
|
||||
case N_TSTRUCT:
|
||||
fputs("struct { ", of);
|
||||
/* re-emit the `@packed` attr so the flag round-trips
|
||||
* through sep-compile (harec unparse/type.ha:122-126). */
|
||||
fputs(t->packed ? "struct @packed { " : "struct { ", of);
|
||||
for (Node *f = t->list; f; f = f->next) {
|
||||
if (f != t->list) fputs(", ", of);
|
||||
if (f->str && f->str[0]) {
|
||||
|
||||
Reference in New Issue
Block a user