Looking deeper in the C standard (my emphasis): 6.2.5.24 The void type comprises an empty set of values; it is an incomplete object type that cannot be completed. 6.5.3.4.1 The sizeof operator shall not be applied to an expression that has function type or an incomplete type, to the parenthesized name of such a type, or to an expression that designates a bit-field member. The alignof operator shall not be applied to a function type or an incomplete type. Thus, SDCC should probably output at least...
AFAIK in general sizeof(void) is undefined behaviour. SDCC has chosen that the size of void is zero and thus a void* increments with 0.
Initialization of bit field in anonymous union broken
This should now be fixed by [pathes:#508] applied in [r16762].
Wrong compile in MCS51 with stack auto option
Fixed in SDCC v4.6.2 [r16767]
* src/mcs51/gen.c (cheapMove): fixed "mov a,a" & "movx ARn,@Ri"
I've been looking into a solution that does not flatten the anonymous members already quite a lot, but I could not yet find a good solution yet. So I am glad your [patches:#508] has been accepted by another developer in the meantime.