On 4/28/10 10:06 , charfi asma wrote: > int a; > int b; > a = 5; > b = 10; > D.1715 = a + b; > retval.0 = D.1715 != 0; > a = a + 1; > if (retval.0 != 0) goto <D.1716>; else goto <D.1717>; > ... > > why retval.0 is added ? why we do not produce if (D.1715 !=0) directly ? > if we eliminate retval.0 Gimple form will be more compact (small file size). Ah, artifact of conversion to gimple. In general, we do not obsess too much with generating the minimal set of variable assignments and whatnot. These are cleaned up by subsequent passes. This design simplifies the work of the gimplifier (gimple conversion pass) and reduces code duplication. If this particular case is not cleaned up at all, that's a bug to be fixed, however. This is something that forward propagation or CFG cleanup could handle. Diego.