Explicação da otimização do gcc

Fora da curiosidade dos hackers, eu me pergunto comogcc pode conseguir otimizar a função abaixo disso de forma inteligente?

int c() {
        int i, j = 0;
        for (i = 0; i < 10; i++) {
                j += i;
        }
        return j;
}

$objdump -D c.o abaixo é para o braço, mas o x86 não é diferente na lógica.

00000000 <c>:
   0:   202d        movs    r0, #45 ; 0x2d
   2:   4770        bx  lr

Eu principalmente me pergunto se isso é resultado de uma cadeia de otimizações ou algo como uma correspondência de modelo? Existe alguma documentação sobre essas otimizações?

questionAnswers(1)

yourAnswerToTheQuestion