-
exemple de programme :
#include <stdio.h>
#define TAILLE 10
int main(void){
int a[TAILLE];
int i;
int resultat=0;
for(i=0;i<TAILLE;i++) a[i]=TAILLE*i;
for(i=1;i<TAILLE;i++) resultat += a[i];
return resultat;
}
- compilation avec gcc :
$ gcc -Wall -O --dump-tree-ivopts --dump-tree-optimized \
complexite.c -o complexite
- résultat :
$ cat complexite.c.126t.optimized
main ()
{
unsigned int ivtmp.36;
unsigned int ivtmp.34;
unsigned int ivtmp.25;
int resultat;
int a[10];
<bb 2>:
ivtmp.34 = (unsigned int) &a[0];
ivtmp.36 = 0;
<bb 3>:
MEM[index: ivtmp.34] = (int) ivtmp.36;
ivtmp.34 = ivtmp.34 + 4;
ivtmp.36 = ivtmp.36 + 10;
if (ivtmp.34 != (unsigned int) (&a + 40)) goto <bb 3>; else goto <bb 4>;
<bb 4>:
ivtmp.25 = (unsigned int) &a[1];
resultat = 0;
<bb 5>:
resultat = resultat + MEM[index: ivtmp.25];
ivtmp.25 = ivtmp.25 + 4;
if (ivtmp.34 != ivtmp.25) goto <bb 5>; else goto <bb 6>;
<bb 6>:
return resultat;