Martial Demolins (./206) :
Ya un label entre les deux 
Effectivement, ce serait incorrect de virer le
tst là.

Et puis de toute façon, la future bêta 9 ne génère pas ça (il n'y a pas ce label et donc pas le
tst incriminé non plus), donc il n'a rien à corriger.

Martial Demolins (./207) :
__main:
move.w #18,-(%sp)
pea .LC0
jbsr fast_and_perfect_hash
addq.l #6,%sp
rts
Quel intérêt de faire ça? Pourquoi empiler puis faire un saut pour s'empresser de dépiler à l'arrivée? Pourquoi pas mettre __main au début de la fonction principale et renseigner directment les registres?
Parce que c'est la convention d'appel.
Si on met
static à de la fonction, elle sera automatiquement inlinée (même en
-Os, étant donné qu'elle est appelée exactement une fois), ce qui fait essentiellement ce que tu proposes. (Mais dans ce cas, la fonction sera totalement éliminée vu qu'elle n'a pas d'effets collatéraux.

C'est bien pour ça que je dis de toujours tester avec des entrées utilisateur et afficher le résultat!) Mais si elle n'est pas
static, GCC ne peut pas savoir qu'il n'y a pas un autre fichier .c qui veut appeler la fonction! C'est bien pour ça que je dis de
toujours mettre
static pour les fonctions ou variables globales qui ne sont pas utilisées dans un autre .c. Même s'il y en a un seul! (GCC ne peut pas savoir.)