From 42a7f2408f83fd18c9ad0f3691094423113aaedc Mon Sep 17 00:00:00 2001 From: Pierre Cwik Date: Thu, 19 May 2016 17:51:10 +0200 Subject: [PATCH] optimisation 19 mai --- a.out | Bin 0 -> 6944 bytes code_mort | Bin 0 -> 6696 bytes code_mort.c | 9 +++++++++ code_mort.c.067t.dce1 | 12 ++++++++++++ code_mort.c.083t.dce2 | 12 ++++++++++++ deroulement_boucle | Bin 0 -> 6928 bytes deroulement_boucle.c | 12 ++++++++++++ deroulement_boucle.c.117t.cunroll | 153 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ deroulement_boucle.c.169t.optimized | 126 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ loptimizz | 139 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ optimisation2 | Bin 0 -> 7064 bytes optimisation2.c | 10 ++++++++++ optimisation2.c.018t.einline | 110 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ optimisation2.c.169t.optimized | 31 +++++++++++++++++++++++++++++++ propagation | Bin 0 -> 6536 bytes propagation.c | 6 ++++++ propagation.c.021t.ccp1 | 42 ++++++++++++++++++++++++++++++++++++++++++ propagation.c.055t.ccp2 | 40 ++++++++++++++++++++++++++++++++++++++++ propagation.c.087t.ccp3 | 14 ++++++++++++++ recursion | Bin 0 -> 7024 bytes recursion.c | 11 +++++++++++ recursion.c.169t.optimized | 60 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ second_degre | Bin 0 -> 7576 bytes second_degre.c | 20 ++++++++++++++++++++ second_degre.c.120t.ivopts | 153 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ second_degre.c.169t.optimized | 156 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 26 files changed, 1116 insertions(+), 0 deletions(-) create mode 100755 a.out create mode 100755 code_mort create mode 100644 code_mort.c create mode 100644 code_mort.c.067t.dce1 create mode 100644 code_mort.c.083t.dce2 create mode 100755 deroulement_boucle create mode 100644 deroulement_boucle.c create mode 100644 deroulement_boucle.c.117t.cunroll create mode 100644 deroulement_boucle.c.169t.optimized create mode 100644 loptimizz create mode 100755 optimisation2 create mode 100644 optimisation2.c create mode 100644 optimisation2.c.018t.einline create mode 100644 optimisation2.c.169t.optimized create mode 100755 propagation create mode 100644 propagation.c create mode 100644 propagation.c.021t.ccp1 create mode 100644 propagation.c.055t.ccp2 create mode 100644 propagation.c.087t.ccp3 create mode 100755 recursion create mode 100644 recursion.c create mode 100644 recursion.c.169t.optimized create mode 100755 second_degre create mode 100644 second_degre.c create mode 100644 second_degre.c.120t.ivopts create mode 100644 second_degre.c.169t.optimized diff --git a/a.out b/a.out new file mode 100755 index 0000000..c3c2da0 Binary files /dev/null and b/a.out differ diff --git a/code_mort b/code_mort new file mode 100755 index 0000000..3db0e38 Binary files /dev/null and b/code_mort differ diff --git a/code_mort.c b/code_mort.c new file mode 100644 index 0000000..44a5e61 --- /dev/null +++ b/code_mort.c @@ -0,0 +1,9 @@ +#include +int main(void){ +int a=0; +if(a==2) printf("Bonjour \n"); +printf("Coucou !\n"); +a=1; +return a; +printf("Caché !\n"); +} \ No newline at end of file diff --git a/code_mort.c.067t.dce1 b/code_mort.c.067t.dce1 new file mode 100644 index 0000000..bbf4d50 --- /dev/null +++ b/code_mort.c.067t.dce1 @@ -0,0 +1,12 @@ + +;; Function main (main, funcdef_no=11, decl_uid=2234, symbol_order=11) (executed once) + +main () +{ + : + __builtin_puts (&"Coucou !"[0]); + return 1; + +} + + diff --git a/code_mort.c.083t.dce2 b/code_mort.c.083t.dce2 new file mode 100644 index 0000000..bbf4d50 --- /dev/null +++ b/code_mort.c.083t.dce2 @@ -0,0 +1,12 @@ + +;; Function main (main, funcdef_no=11, decl_uid=2234, symbol_order=11) (executed once) + +main () +{ + : + __builtin_puts (&"Coucou !"[0]); + return 1; + +} + + diff --git a/deroulement_boucle b/deroulement_boucle new file mode 100755 index 0000000..c8dd7d1 Binary files /dev/null and b/deroulement_boucle differ diff --git a/deroulement_boucle.c b/deroulement_boucle.c new file mode 100644 index 0000000..bcadddc --- /dev/null +++ b/deroulement_boucle.c @@ -0,0 +1,12 @@ +#include +#define TAILLE 100 +#define TAILLE1 500 +#define TAILLE2 500 +int a[TAILLE][TAILLE1][TAILLE2]; +int main(void){ +int resultat=0; +int i,e,u; +for(i=0;i: + goto ; + + : + + : + # u_54 = PHI + # ivtmp_9 = PHI + _19 = rand (); + a[i_26][e_52][u_54] = _19; + u_21 = u_54 + 1; + ivtmp_7 = ivtmp_9 - 1; + if (ivtmp_7 != 0) + goto ; + else + goto ; + + : + e_22 = e_52 + 1; + ivtmp_3 = ivtmp_4 - 1; + if (ivtmp_3 != 0) + goto ; + else + goto ; + + : + + : + # e_52 = PHI + # ivtmp_4 = PHI + goto ; + + : + i_23 = i_26 + 1; + ivtmp_1 = ivtmp_2 - 1; + if (ivtmp_1 != 0) + goto ; + else + goto ; + + : + goto ; + + : + + : + # i_26 = PHI + # ivtmp_2 = PHI + goto ; + + : + + : + # vectp_a.3_49 = PHI + # vect_resultat_28.6_46 = PHI + # ivtmp_25 = PHI + vect__27.5_48 = MEM[(int *)vectp_a.3_49]; + vect_resultat_28.6_12 = vect__27.5_48 + vect_resultat_28.6_46; + vectp_a.3_50 = vectp_a.3_49 + 16; + ivtmp_59 = ivtmp_25 + 1; + if (ivtmp_59 < 125) + goto ; + else + goto ; + + : + # vect_resultat_28.6_11 = PHI + vect_resultat_28.8_10 = vect_resultat_28.6_11 v>> 64; + vect_resultat_28.8_17 = vect_resultat_28.8_10 + vect_resultat_28.6_11; + vect_resultat_28.8_14 = vect_resultat_28.8_17 v>> 32; + vect_resultat_28.8_24 = vect_resultat_28.8_14 + vect_resultat_28.8_17; + stmp_resultat_28.7_16 = BIT_FIELD_REF ; + vect_resultat_28.9_33 = stmp_resultat_28.7_16 + resultat_34; + e_30 = e_53 + 1; + ivtmp_8 = ivtmp_32 - 1; + if (ivtmp_8 != 0) + goto ; + else + goto ; + + : + + : + # resultat_34 = PHI + # e_53 = PHI + # ivtmp_32 = PHI + _44 = (sizetype) i_51; + _42 = _44 * 1000000; + _40 = (sizetype) e_53; + _47 = _40 * 2000; + _45 = _42 + _47; + vectp_a.4_39 = &a + _45; + goto ; + + : + # resultat_41 = PHI + i_31 = i_51 + 1; + ivtmp_5 = ivtmp_6 - 1; + if (ivtmp_5 != 0) + goto ; + else + goto ; + + : + + : + # resultat_35 = PHI + # i_51 = PHI + # ivtmp_6 = PHI + goto ; + + : + # resultat_37 = PHI + return resultat_37; + +} + + diff --git a/deroulement_boucle.c.169t.optimized b/deroulement_boucle.c.169t.optimized new file mode 100644 index 0000000..2ab3df3 --- /dev/null +++ b/deroulement_boucle.c.169t.optimized @@ -0,0 +1,126 @@ + +;; Function main (main, funcdef_no=11, decl_uid=2235, symbol_order=12) (executed once) + +Removing basic block 14 +Removing basic block 15 +Removing basic block 16 +Removing basic block 17 +Removing basic block 18 +Removing basic block 19 +Removing basic block 20 +Removing basic block 21 +Removing basic block 22 +Removing basic block 23 +main () +{ + unsigned long ivtmp.58; + unsigned long ivtmp.49; + unsigned long ivtmp.41; + unsigned long ivtmp.32; + unsigned long ivtmp.23; + unsigned long ivtmp.12; + vector(4) int vect_resultat_28.8; + int stmp_resultat_28.7; + vector(4) int vect_resultat_28.6; + vector(4) int vect__27.5; + int resultat; + void * _13; + int _19; + void * _36; + unsigned long _39; + unsigned long _50; + unsigned long _62; + unsigned long _65; + unsigned long _74; + + : + ivtmp.58_6 = (unsigned long) &MEM[(void *)&a + 1000000B]; + _62 = (unsigned long) &MEM[(void *)&a + 101000000B]; + goto ; + + : + # ivtmp.41_51 = PHI + _19 = rand (); + _36 = (void *) ivtmp.41_51; + MEM[base: _36, offset: 0B] = _19; + ivtmp.41_60 = ivtmp.41_51 + 4; + if (ivtmp.41_60 != _74) + goto ; + else + goto ; + + : + if (ivtmp.58_52 != _74) + goto ; + else + goto ; + + : + # ivtmp.49_54 = PHI <_74(4), _50(7)> + _74 = ivtmp.49_54 + 2000; + goto ; + + : + ivtmp.58_31 = ivtmp.58_52 + 1000000; + if (ivtmp.58_31 != _62) + goto ; + else + goto ; + + : + # ivtmp.58_52 = PHI + _50 = ivtmp.58_52 + 18446744073708551616; + goto ; + + : + # vect_resultat_28.6_46 = PHI + # ivtmp.12_43 = PHI + _13 = (void *) ivtmp.12_43; + vect__27.5_48 = MEM[base: _13, offset: 0B]; + vect_resultat_28.6_12 = vect__27.5_48 + vect_resultat_28.6_46; + ivtmp.12_38 = ivtmp.12_43 + 16; + if (ivtmp.12_38 != _65) + goto ; + else + goto ; + + : + # vect_resultat_28.6_11 = PHI + vect_resultat_28.8_10 = vect_resultat_28.6_11 v>> 64; + vect_resultat_28.8_17 = vect_resultat_28.8_10 + vect_resultat_28.6_11; + vect_resultat_28.8_14 = vect_resultat_28.8_17 v>> 32; + vect_resultat_28.8_24 = vect_resultat_28.8_14 + vect_resultat_28.8_17; + stmp_resultat_28.7_16 = BIT_FIELD_REF ; + resultat_33 = stmp_resultat_28.7_16 + resultat_34; + if (ivtmp.32_53 != _65) + goto ; + else + goto ; + + : + # resultat_34 = PHI + # ivtmp.23_49 = PHI <_65(9), _39(12)> + _65 = ivtmp.23_49 + 2000; + goto ; + + : + # resultat_41 = PHI + ivtmp.32_40 = ivtmp.32_53 + 1000000; + if (ivtmp.32_40 != _62) + goto ; + else + goto ; + + : + # resultat_35 = PHI + # ivtmp.32_53 = PHI + _39 = ivtmp.32_53 + 18446744073708551616; + goto ; + + : + # resultat_37 = PHI + return resultat_37; + +} + + diff --git a/loptimizz b/loptimizz new file mode 100644 index 0000000..04da52e --- /dev/null +++ b/loptimizz @@ -0,0 +1,139 @@ +/////////////////////////////////////////// Optimisation 2/5 //////////////////////////////////////////////////// + +exercices : "fonctions imbriquées" + +Le compilateur voit bien l'utilité de la fonction "oppose" et remplace directement par des "-" . + + + + + + + + +exercices "calcul du gain" + +On ajoute deux dimensions au tableau ( a[1000][1000][1000] ) + +et on voit bien la différence + +avec optimisation : +real 0m7.410s +user 0m6.728s +sys 0m0.672s + il est environ 1.5 fois plus rapide + +sans optimisation : +real 0m10.000s +user 0m9.364s +sys 0m0.624s + + + +avec a[100][500][500] + +optimisé : +real 0m0.245s +user 0m0.216s +sys 0m0.028s + il est presque deux fois plus rapide avec la version optimisée + +non optimisé : +real 0m0.405s +user 0m0.384s +sys 0m0.020s + + +exercices "multiplication récursive" + +plus aboutie car le compilateur remplace directement les additions par une multiplication + + +/////////////////////////////////////////// Optimisation 3/5 //////////////////////////////////////////////////// + + +Exercice de code mort + +je modifie legerement le programme + +#include +int main(void){ +int a=0; +if(a==2) printf("Bonjour \n"); +printf("Coucou !\n"); +a=1; +return a; +printf("Caché !\n"); +} + +et le compile +résultat : + +;; Function main (main, funcdef_no=11, decl_uid=2234, symbol_order=11) (executed once) + +main () +{ + : + __builtin_puts (&"Coucou !"[0]); + return 1; + +} + +Le compilateur enlève la ligne if(a==2) printf("Bonjour \n"); qui ne s'executerait jamais --> Code mort + + +Exercice de propagation : + +en modifiant le code de cette manière puis en compilant (avec -03) j'obtient : + + int main(void){ +int a=1,b=2,c=3, i=2; +int d=a*c,e=d+2*b; +while(i > 0) { i--; if(e!=2) e--; } +return e; +} + + +;; Function main (main, funcdef_no=0, decl_uid=1743, symbol_order=0) (executed once) + +main () +{ + int e; + int i; + + : + return 5; + +} + +C'est assez impressionant ! + +Exercice second degre : + +#include +#include + +int main() { + int a,b,c; + scanf("%d,%d,%d",&a,&b,&c); + float r1, r2; + +if(b*b-4*a*c > 0) { r1=(-b-sqrt(b*b-4*a*c))/(2*a); r2=(-b+sqrt(b*b-4*a*c))/(2*a); printf("r1 = %f \nr2 = %f",r1,r2);} + +if(b*b-4*a*c == 0) { r1 = -b/(2*a); r2=r1; printf("r1 = %f \nr2 = %f",r1,r2); } + +if(b*b-4*a*c < 0) printf("pas de racine"); + +return 0; + +} + + + Pour ce code le compilateur recalcule le delta au moins une fois + + + + + + + diff --git a/optimisation2 b/optimisation2 new file mode 100755 index 0000000..5a548e9 Binary files /dev/null and b/optimisation2 differ diff --git a/optimisation2.c b/optimisation2.c new file mode 100644 index 0000000..81004e4 --- /dev/null +++ b/optimisation2.c @@ -0,0 +1,10 @@ +#include +static int oppose(int y) {return y*(-1);} +static int soustraction(int x,int y){ return x+ oppose(y); } +int main(void){ +int a,b,c; +printf("Donnez 3 entiers\n"); +scanf("%d %d %d",&a,&b,&c); +printf("%d\n",soustraction(a,soustraction(b,c))); +return 0; +} diff --git a/optimisation2.c.018t.einline b/optimisation2.c.018t.einline new file mode 100644 index 0000000..61d6ca5 --- /dev/null +++ b/optimisation2.c.018t.einline @@ -0,0 +1,110 @@ + +;; Function oppose (oppose, funcdef_no=11, decl_uid=2234, symbol_order=11) + +Iterations: 0 +oppose (int y) +{ + int _2; + + : + _2 = -y_1(D); + return _2; + +} + + + +;; Function soustraction (soustraction, funcdef_no=12, decl_uid=2238, symbol_order=12) + +Considering inline candidate oppose. + Inlining oppose into soustraction. +Iterations: 1 +Merging blocks 2 and 4 +Merging blocks 2 and 3 + +Symbols to be put in SSA form +{ D.2264 } +Incremental SSA update started at block: 0 +Number of blocks in CFG: 3 +Number of blocks to update: 2 ( 67%) + + +soustraction (int x, int y) +{ + int D.2264; + int _2; + int _4; + int _6; + + : + _6 = -y_1(D); + _7 = _6; + _2 = _7; + _4 = _2 + x_3(D); + return _4; + +} + + + +;; Function main (main, funcdef_no=13, decl_uid=2241, symbol_order=13) + +Considering inline candidate soustraction. + Inlining soustraction into main. +Considering inline candidate soustraction. + Inlining soustraction into main. +Iterations: 1 +Merging blocks 2 and 4 +Merging blocks 3 and 6 +Merging blocks 2 and 3 +Merging blocks 2 and 5 + +Symbols to be put in SSA form +{ D.2269 D.2272 } +Incremental SSA update started at block: 0 +Number of blocks in CFG: 3 +Number of blocks to update: 2 ( 67%) + + +main () +{ + int D.2272; + int D.2269; + int c; + int b; + int a; + int c.0_4; + int b.1_5; + int _6; + int a.2_7; + int _8; + int _10; + int _14; + int _15; + int _16; + int _17; + + : + __builtin_puts (&"Donnez 3 entiers"[0]); + scanf ("%d %d %d", &a, &b, &c); + c.0_4 = c; + b.1_5 = b; + _14 = -c.0_4; + _15 = b.1_5 + _14; + _18 = _15; + _6 = _18; + a.2_7 = a; + _16 = -_6; + _17 = a.2_7 + _16; + _19 = _17; + _8 = _19; + printf ("%d\n", _8); + _10 = 0; + a ={v} {CLOBBER}; + b ={v} {CLOBBER}; + c ={v} {CLOBBER}; + return _10; + +} + + diff --git a/optimisation2.c.169t.optimized b/optimisation2.c.169t.optimized new file mode 100644 index 0000000..391f5ae --- /dev/null +++ b/optimisation2.c.169t.optimized @@ -0,0 +1,31 @@ + +;; Function main (main, funcdef_no=13, decl_uid=2241, symbol_order=13) (executed once) + +main () +{ + int c; + int b; + int a; + int c.0_4; + int b.1_5; + int a.2_6; + int _11; + int _12; + + : + __builtin_puts (&"Donnez 3 entiers"[0]); + scanf ("%d %d %d", &a, &b, &c); + c.0_4 = c; + b.1_5 = b; + _11 = b.1_5 - c.0_4; + a.2_6 = a; + _12 = a.2_6 - _11; + printf ("%d\n", _12); + a ={v} {CLOBBER}; + b ={v} {CLOBBER}; + c ={v} {CLOBBER}; + return 0; + +} + + diff --git a/propagation b/propagation new file mode 100755 index 0000000..ee14a84 Binary files /dev/null and b/propagation differ diff --git a/propagation.c b/propagation.c new file mode 100644 index 0000000..2c50825 --- /dev/null +++ b/propagation.c @@ -0,0 +1,6 @@ + int main(void){ +int a=1,b=2,c=3, i=2; +int d=a*c,e=d+2*b; +while(i > 0) { i--; if(e!=2) e--; } +return e; +} diff --git a/propagation.c.021t.ccp1 b/propagation.c.021t.ccp1 new file mode 100644 index 0000000..45045b3 --- /dev/null +++ b/propagation.c.021t.ccp1 @@ -0,0 +1,42 @@ + +;; Function main (main, funcdef_no=0, decl_uid=1743, symbol_order=0) + +main () +{ + int e; + int d; + int i; + int c; + int b; + int a; + + : + i_6 = 2; + e_9 = 7; + goto ; + + : + i_10 = i_1 + -1; + if (e_2 != 2) + goto ; + else + goto ; + + : + e_11 = e_2 + -1; + + : + # i_1 = PHI <2(2), i_10(3), i_10(4)> + # e_2 = PHI <7(2), e_2(3), e_11(4)> + if (i_1 > 0) + goto ; + else + goto ; + + : + e_12 = e_2; + return e_12; + +} + + diff --git a/propagation.c.055t.ccp2 b/propagation.c.055t.ccp2 new file mode 100644 index 0000000..7495c40 --- /dev/null +++ b/propagation.c.055t.ccp2 @@ -0,0 +1,40 @@ + +;; Function main (main, funcdef_no=0, decl_uid=1743, symbol_order=0) (executed once) + +main () +{ + int e; + int i; + + : + goto ; + + : + i_5 = i_1 + -1; + if (e_2 != 2) + goto ; + else + goto ; + + : + e_6 = e_2 + -1; + + : + # i_3 = PHI + # e_4 = PHI + + : + # i_1 = PHI + # e_2 = PHI + if (i_1 > 0) + goto ; + else + goto ; + + : + e_7 = e_2; + return e_7; + +} + + diff --git a/propagation.c.087t.ccp3 b/propagation.c.087t.ccp3 new file mode 100644 index 0000000..87b3851 --- /dev/null +++ b/propagation.c.087t.ccp3 @@ -0,0 +1,14 @@ + +;; Function main (main, funcdef_no=0, decl_uid=1743, symbol_order=0) (executed once) + +main () +{ + int e; + int i; + + : + return 5; + +} + + diff --git a/recursion b/recursion new file mode 100755 index 0000000..ad39b7b Binary files /dev/null and b/recursion differ diff --git a/recursion.c b/recursion.c new file mode 100644 index 0000000..c47c171 --- /dev/null +++ b/recursion.c @@ -0,0 +1,11 @@ +#include +int multiplication(int a,int b){ +if(b==0) return 0; +else return multiplication(a,b-1)+a; +} +int main(void){ +int a,b; +scanf("%d %d",&a,&b); +printf("%d\n",multiplication(a,b)); +return 0; +} diff --git a/recursion.c.169t.optimized b/recursion.c.169t.optimized new file mode 100644 index 0000000..66dd924 --- /dev/null +++ b/recursion.c.169t.optimized @@ -0,0 +1,60 @@ + +;; Function multiplication (multiplication, funcdef_no=11, decl_uid=2235, symbol_order=11) + +Removing basic block 5 +multiplication (int a, int b) +{ + int add_acc_7; + int add_acc_9; + + : + if (b_11(D) == 0) + goto ; + else + goto ; + + : + add_acc_9 = a_4(D) * b_11(D); + + : + # add_acc_7 = PHI + return add_acc_7; + +} + + + +;; Function main (main, funcdef_no=12, decl_uid=2238, symbol_order=12) (executed once) + +Removing basic block 5 +main () +{ + int a; + int b; + int b; + int a; + int add_acc_12; + int add_acc_13; + + : + scanf ("%d %d", &a, &b); + b_3 = b; + a_4 = a; + if (b_3 == 0) + goto ; + else + goto ; + + : + add_acc_12 = b_3 * a_4; + + : + # add_acc_13 = PHI + printf ("%d\n", add_acc_13); + a ={v} {CLOBBER}; + b ={v} {CLOBBER}; + return 0; + +} + + diff --git a/second_degre b/second_degre new file mode 100755 index 0000000..35db9b4 Binary files /dev/null and b/second_degre differ diff --git a/second_degre.c b/second_degre.c new file mode 100644 index 0000000..051d93a --- /dev/null +++ b/second_degre.c @@ -0,0 +1,20 @@ +#include +#include + +int main() { + int a,b,c; + scanf("%d,%d,%d",&a,&b,&c); + float r1, r2; + +if(b*b-4*a*c > 0) { r1=(-b-sqrt(b*b-4*a*c))/(2*a); r2=(-b+sqrt(b*b-4*a*c))/(2*a); printf("r1 = %f \nr2 = %f",r1,r2);} + +if(b*b-4*a*c == 0) { r1 = -b/(2*a); r2=r1; printf("r1 = %f \nr2 = %f",r1,r2); } + +if(b*b-4*a*c < 0) printf("pas de racine"); + +return 0; + +} + + + diff --git a/second_degre.c.120t.ivopts b/second_degre.c.120t.ivopts new file mode 100644 index 0000000..b647728 --- /dev/null +++ b/second_degre.c.120t.ivopts @@ -0,0 +1,153 @@ + +;; Function main (main, funcdef_no=14, decl_uid=3287, symbol_order=14) (executed once) + +main () +{ + float r2; + float r1; + int c; + int b; + int a; + int b.0_6; + int _7; + int a.1_8; + int _9; + int c.2_10; + int _11; + int _12; + int _13; + double _14; + double _15; + double _17; + double _18; + int a.1_19; + int _20; + double _21; + double _22; + int b.0_24; + int _25; + double _26; + int _27; + int _28; + int c.2_29; + int _30; + int _31; + double _32; + double _34; + double _35; + int a.1_36; + int _37; + double _38; + double _39; + double _41; + double _42; + int b.0_44; + int _45; + int a.1_46; + int _47; + int c.2_48; + int _49; + int _50; + int _51; + int _52; + double _54; + int pretmp_82; + int pretmp_84; + int pretmp_86; + int pretmp_88; + int pretmp_90; + int pretmp_92; + int pretmp_94; + int prephitmp_95; + + : + scanf ("%d,%d,%d", &a, &b, &c); + b.0_6 = b; + _7 = b.0_6 * b.0_6; + a.1_8 = a; + _9 = a.1_8 * -4; + c.2_10 = c; + _11 = _9 * c.2_10; + _12 = _7 + _11; + if (_12 > 0) + goto ; + else + goto ; + + : + _13 = -b.0_6; + _14 = (double) _13; + _15 = (double) _12; + _17 = sqrt (_15); + _18 = _14 - _17; + a.1_19 = a; + _20 = a.1_19 * 2; + _21 = (double) _20; + _22 = _18 / _21; + r1_23 = (float) _22; + b.0_24 = b; + _25 = -b.0_24; + _26 = (double) _25; + _27 = b.0_24 * b.0_24; + _28 = a.1_19 * -4; + c.2_29 = c; + _30 = _28 * c.2_29; + _31 = _27 + _30; + _32 = (double) _31; + _34 = sqrt (_32); + _35 = _26 + _34; + a.1_36 = a; + _37 = a.1_36 * 2; + _38 = (double) _37; + _39 = _35 / _38; + r2_40 = (float) _39; + _41 = (double) r2_40; + _42 = (double) r1_23; + printf ("r1 = %f \nr2 = %f", _42, _41); + + : + b.0_44 = b; + _45 = b.0_44 * b.0_44; + a.1_46 = a; + _47 = a.1_46 * -4; + c.2_48 = c; + _49 = _47 * c.2_48; + _50 = _45 + _49; + if (_50 == 0) + goto ; + else + goto ; + + : + _51 = a.1_46 * -2; + _52 = b.0_44 / _51; + r2_53 = (float) _52; + _54 = (double) r2_53; + printf ("r1 = %f \nr2 = %f", _54, _54); + pretmp_82 = b; + pretmp_84 = pretmp_82 * pretmp_82; + pretmp_86 = a; + pretmp_88 = pretmp_86 * -4; + pretmp_90 = c; + pretmp_92 = pretmp_88 * pretmp_90; + pretmp_94 = pretmp_84 + pretmp_92; + + : + # prephitmp_95 = PHI <_50(4), pretmp_94(5)> + if (prephitmp_95 < 0) + goto ; + else + goto ; + + : + printf ("pas de racine"); + + : + a ={v} {CLOBBER}; + b ={v} {CLOBBER}; + c ={v} {CLOBBER}; + return 0; + +} + + diff --git a/second_degre.c.169t.optimized b/second_degre.c.169t.optimized new file mode 100644 index 0000000..a094ec6 --- /dev/null +++ b/second_degre.c.169t.optimized @@ -0,0 +1,156 @@ + +;; Function main (main, funcdef_no=14, decl_uid=3287, symbol_order=14) (executed once) + +Removing basic block 9 +Removing basic block 10 +Removing basic block 11 +main () +{ + float r2; + float r1; + int c; + int b; + int a; + int b.0_6; + int _7; + int a.1_8; + int _9; + int c.2_10; + int _11; + int _12; + int _13; + double _14; + double _15; + double _17; + double _18; + int a.1_19; + int _20; + double _21; + double _22; + int b.0_24; + int _25; + double _26; + int _27; + int _28; + int c.2_29; + int _30; + int _31; + double _32; + double _34; + double _35; + int a.1_36; + int _37; + double _38; + double _39; + double _41; + double _42; + int b.0_44; + int _45; + int a.1_46; + int _47; + int c.2_48; + int _49; + int _50; + int _51; + int _52; + double _54; + int pretmp_82; + int pretmp_84; + int pretmp_86; + int pretmp_88; + int pretmp_90; + int pretmp_92; + int pretmp_94; + int prephitmp_95; + + : + scanf ("%d,%d,%d", &a, &b, &c); + b.0_6 = b; + _7 = b.0_6 * b.0_6; + a.1_8 = a; + _9 = a.1_8 * -4; + c.2_10 = c; + _11 = _9 * c.2_10; + _12 = _7 + _11; + if (_12 > 0) + goto ; + else + goto ; + + : + _13 = -b.0_6; + _14 = (double) _13; + _15 = (double) _12; + _17 = sqrt (_15); + _18 = _14 - _17; + a.1_19 = a; + _20 = a.1_19 * 2; + _21 = (double) _20; + _22 = _18 / _21; + r1_23 = (float) _22; + b.0_24 = b; + _25 = -b.0_24; + _26 = (double) _25; + _27 = b.0_24 * b.0_24; + _28 = a.1_19 * -4; + c.2_29 = c; + _30 = _28 * c.2_29; + _31 = _27 + _30; + _32 = (double) _31; + _34 = sqrt (_32); + _35 = _26 + _34; + a.1_36 = a; + _37 = a.1_36 * 2; + _38 = (double) _37; + _39 = _35 / _38; + r2_40 = (float) _39; + _41 = (double) r2_40; + _42 = (double) r1_23; + printf ("r1 = %f \nr2 = %f", _42, _41); + + : + b.0_44 = b; + _45 = b.0_44 * b.0_44; + a.1_46 = a; + _47 = a.1_46 * -4; + c.2_48 = c; + _49 = _47 * c.2_48; + _50 = _45 + _49; + if (_50 == 0) + goto ; + else + goto ; + + : + _51 = a.1_46 * -2; + _52 = b.0_44 / _51; + r2_53 = (float) _52; + _54 = (double) r2_53; + printf ("r1 = %f \nr2 = %f", _54, _54); + pretmp_82 = b; + pretmp_84 = pretmp_82 * pretmp_82; + pretmp_86 = a; + pretmp_88 = pretmp_86 * -4; + pretmp_90 = c; + pretmp_92 = pretmp_88 * pretmp_90; + pretmp_94 = pretmp_84 + pretmp_92; + + : + # prephitmp_95 = PHI <_50(4), pretmp_94(5)> + if (prephitmp_95 < 0) + goto ; + else + goto ; + + : + printf ("pas de racine"); + + : + a ={v} {CLOBBER}; + b ={v} {CLOBBER}; + c ={v} {CLOBBER}; + return 0; + +} + + -- libgit2 0.21.2