$ cat ssa.c int main(void){ int a=0; int b=a; a=1; if(a==1) a++; return a+b; } $ gcc -O -Wall --dump-tree-ssa ssa.c -o ssa $ cat ssa.c.024t.ssa main () { int a,b; int D.1196; <bb 2>: a_2 = 0; b_3 = a_2; a_4 = 1; if (a_4 == 1) goto <bb 3>; else goto <bb 4>; <bb 3>: a_5 = a_4 + 1; <bb 4>: # a_1 = PHI <a_4(2), a_5(3)> D.1196_6 = a_1 + b_3; return D.1196_6; }
$ cat ssa3.c #define TAILLE 1024 int main(void){ int a[TAILLE]; int index=TAILLE/2; int resultat=0; int i; for(i=0;i<TAILLE;i++) a[i]=0; for(i=0;i<TAILLE;i++) if(i==index) a[i]++; for(i=0;i<TAILLE;i++) resultat += a[i]; return resultat; } $ gcc -O3 -Wall --dump-tree-ssa ssa3.c -o ssa3 $ cat ssa3.c.024t.ssa main () { int i; int resultat; int index; int a[1024]; int D.1210,D.1209,D.1208; int i.0; ...
#include <stdio.h> int main(void){ int a=0; printf("Coucou !\n"); a=1; return a; printf("Caché !\n"); }
$ gcc -O -Wall --dump-tree-dce code_mort.c -o code_mort
$ cat code_mort.c.079t.dce4 main () { <bb 2>: __builtin_puts (&"Coucou !"[0]); a = 1; return 1; }
int main(void){ int a=1,b=2,c=3; int d=a*c,e=d+2*b; if(e!=2) e--; return e; }
$ gcc -O -Wall --dump-tree-ccp propagation.c -o propagation
$cat propagation.c.056t.ccp2 main () { <bb 2>: return 6; }