On Mon, Jan 24 2022, Han-Wen Nienhuys wrote: > On Mon, Jan 24, 2022 at 8:44 PM Ævar Arnfjörð Bjarmason > <avarab@xxxxxxxxx> wrote: > >> I didn't test the v6 on xlc on AIX 7.1, but found that it refuses to >> compile this code (but the one on AIX 7.2 is OK with it): >> >> "reftable/generic.c", line 135.26: 1506-196 (S) Initialization between types "char*" and "struct reftable_ref_record" is not allowed. >> "reftable/generic.c", line 147.26: 1506-196 (S) Initialization between types "char*" and "struct reftable_log_record" is not allowed. >> "reftable/writer.c", line 261.26: 1506-196 (S) Initialization between types "char*" and "struct reftable_ref_record" is not allowed. >> "reftable/writer.c", line 312.26: 1506-196 (S) Initialization between types "char*" and "struct reftable_log_record" is not allowed. >> "reftable/writer.c", line 406.45: 1506-196 (S) Initialization between types "unsigned long long" and "struct reftable_index_record" is not allowed. >> > >> I.e. you're dereferencing a struct type here to get at its first member, > > No, that's not what I'm doing. > >> > + struct reftable_record rec = { >> > + .type = BLOCK_TYPE_REF, >> > + .u.ref = *ref, >> > + }; > > reftable_record is tagged union, and u.ref is a reftable_ref_record. I > intend to shallow-copying the parameter (a reftable_record called > 'ref') into 'rec.u.ref' , precisely as it is written. > > Does this patch pass the unittests? No, sorry about that. It fails. I didn't have time to run them earlier (and it takes a while on that platform). I don't know how to work around it then...