O que impossibilidade de retornar matrizes realmente significa em C?

Não estou tentando replicar a pergunta usual sobre C não poder retornar matrizes, mas aprofundar um pouco mais nela.

Não podemos fazer isso:

char f(void)[8] {
    char ret;
    // ...fill...
    return ret;
}

int main(int argc, char ** argv) {
    char obj_a[10];
    obj_a = f();
}

Mas nós podemos fazer:

struct s { char arr[10]; };

struct s f(void) {
    struct s ret;
    // ...fill...
    return ret;
}

int main(int argc, char ** argv) {
    struct s obj_a;
    obj_a = f();
}

Então, eu estava examinando o código ASM gerado pelo gcc -S e parece estar trabalhando com a pilha, endereçando-x(%rbp) como em qualquer outro retorno da função C.

O que há com o retorno de matrizes diretamente? Quero dizer, não em termos de otimização ou complexidade computacional, mas em termos da capacidade real de fazê-lo sem a camada struct.

Dados extras: estou usando Linux e gcc em uma Intel x64.

questionAnswers(4)

yourAnswerToTheQuestion