or que e como o GCC compila uma função com uma declaração de retorno ausent

#include <stdio.h>

char toUpper(char);

int main(void)
{
    char ch, ch2;
    printf("lowercase input : ");
    ch = getchar();
    ch2 = toUpper(ch);
    printf("%c ==> %c\n", ch, ch2);

    return 0;
}

char toUpper(char c)
{
    if(c>='a'&&c<='z')
        c = c - 32;
}

Na função toUpper, o tipo de retorno é char, mas não há "retorno" em toUpper (). E compile o código-fonte com o gcc (GCC) 4.5.1 20100924 (Red Hat 4.5.1-4), fedora-14.

Certamente, é emitido um aviso: "warning: control atinge o final da função não nula", mas funcionando be

O que aconteceu nesse código durante a compilação com o gcc? Eu quero obter uma resposta sólida neste caso. Obrigado :

questionAnswers(8)

yourAnswerToTheQuestion