Cómo hacer que gcc advierta sobre pasar una enumeración incorrecta a una función

gcc no parece producir una advertencia con el siguiente código. ¿Cómo puedo hacer que produzca una advertencia?

typedef enum
{
    REG8_A,
    REG8_B,
    REG8_C
}REG8;

typedef enum
{
    REG16_A,
    REG16_B,
    REG16_C
}REG16;

void function(REG8 reg8)
{

}

int main(void)
{
    function(REG16_A);    // Should warn about wrong enum
}