66Fermer68
Kevin KoflerLe 16/11/2007 à 17:20
Thibaut (./61) :
Ca signifie que le code ne faisait rien à l'origine.

Ou que tout le code a pu être sorti de la boucle.
Dis-nous quelle est la proportion de programmes qui comportent des boucles inutiles ?

L'inlining, tu connais?
static inline void increment(int *foo)
{
  (*foo)++;
}

void _main(void)
{
  int i, j=0;
  for (i=0; i<100; i++) increment(&j);
  printf("%d",j);
}

Ce code est optimisé par GCC en:
__main:
	move.w #100,-(%sp)
	pea .LC0
	jbsr printf
	addq.l #6,%sp
	rts

Rappelle-nous quand GTC sait faire ça. tongue

L'idée est que l'utilisateur de la fonction increment n'a pas à savoir ce qu'elle fait exactement, imagine que ça s'appelle compte_machinchose, qu'il suffit d'incrémenter j actuellement, mais que tu veux garder la possibilité de logguer ce que tu comptes dans une base de données un jour. En attendant, tu ne veux pas que ton programme fasse tourner des boucles pour rien.
Mais GTC est développé courageusement par une seule personne

GTC est également basé sur un compilateur existant, c'est juste que ce compilateur est loin de la qualité de GCC.