------------------- b3lu Loop Unrolling ------------------- : |: a_3 = 10; | N.0_12 = N; i_4 = 0; | a_13 = N.0_12 + 10; goto ; | a_18 = N.0_12 + a_13; | a_23 = N.0_12 + a_18; : | a_28 = N.0_12 + a_23; N.0_5 = N; | return a_28; a_6 = a_2 + N.0_5; | i_7 = i_1 + 1; |} | : | # i_1 = PHI | # a_2 = PHI | if (i_1 <= 3) | goto ; | else | goto ; | | : | D.1594_8 = a_2; | return D.1594_8; | 1 The loop will be unrolled and constant propogation will allow GCC to compute the final value of `a'. Hence the loop will be removed entirely. main () |main () { |{ int a; |: int i; | return 14; int D.1593; | |} : | a_3 = 10; | i_4 = 0; | goto ; | | : | a_5 = a_2 + 1; | i_6 = i_1 + 1; | | : | # i_1 = PHI | # a_2 = PHI | if (i_1 <= 3) | goto ; | else | goto ; | | : | D.1593_7 = a_2; | return D.1593_7; | | } |