------------------------------------------ b2li Loop Invariant Code Motion using PRE ------------------------------------------ : |: sum_2 = 0; | pretmp.2_9 = 1 / x_3(D); | : |: # sum_1 = PHI | # sum_1 = PHI <0(2), sum_5(5)> D.1592_4 = 1 / x_3(D); | D.1592_4 = pretmp.2_9; sum_5 = D.1592_4 + sum_1; | sum_5 = D.1592_4 + sum_1; if (sum_5 < z_6(D)) | if (sum_5 < z_6(D)) goto ; | goto ; else | else goto ; | goto ; | |: | goto ; 1 The expression "1/x" is loop-invariant and is hence hoisted out of the loop where it executes only once (instead of once per iteration).