sizeof (struct) diferente para diferentes compiladores

Supondo que eu tenha um código como este:

#include <stdio.h>
#include <stdint.h>
int main(int argc, char *argv[]) {
    typedef struct{
        uint16_t x : 9;
        uint8_t y : 7;
    } z;
    printf("sizeof(z) = %lu\n",sizeof(z));
}

Eu tenho resultados diferentes para clang no Mac (2) e alguém me disse no Windows que ele retornou (3). Não tenho certeza se entendi bem, mas vejo que, enquanto o primeiro compilador compacta a estrutura para 9 + 7 = 16 bits, o outro usa 16 bits de uint16_t e 8 de uint8_t. Você poderia aconselhar?

questionAnswers(2)

yourAnswerToTheQuestion