The .t82.uncprop dump looks like this: <L16>:; D.15800_45 = *params_11; __nptr_47 = D.15800_45; D.15802_50 = __strtol_internal (__nptr_47, 0B, 10, 0); mult_55 = mult_1 * D.15802_50; goto <bb 15> (<L8>);
<L17>:; D.15800_29 = *params_11; __nptr_31 = D.15800_29; D.15807_34 = __strtol_internal (__nptr_31, 0B, 10, 0); D.15790_39 = screen_16->whichVwin; D.15791_40 = D.15790_39->f_height; mult_41 = D.15807_34 * D.15791_40; goto <bb 15> (<L8>); <L18>:; D.15811_25 = screen_16->scrolllines; D.15790_26 = screen_16->whichVwin; D.15791_27 = D.15790_26->f_height; mult_28 = D.15811_25 * D.15791_27; goto <bb 15> (<L8>); <L6>:; D.15698_10 = gw_4->core.parent; D.15697_13 = AmountToScroll (D.15698_10, params_11, nparams_12); # D.15697_3 = PHI <0(3), mult_41(12), D.15697_13(14), 0(0), mult_55(11), mult_28(13)>; <L8>:; return D.15697_3; and the .t87.final_cleanup dump looks like: <L16>:; D.15802 = __strtol_internal (*params, 0B, 10, 0); mult.78 = mult * D.15802; D.15697 = mult.78; goto <bb 17> (<L26>); <L17>:; D.15807 = __strtol_internal (*params, 0B, 10, 0); mult.77 = D.15807 * screen->whichVwin->f_height; D.15697 = mult.77; goto <bb 17> (<L26>); <L18>:; mult.76 = screen->scrolllines * screen->whichVwin->f_height; D.15697 = mult.76; goto <bb 17> (<L26>); <L6>:; D.15697 = AmountToScroll (gw->core.parent, params, nparams); goto <bb 17> (<L26>); <L8>:; D.15697 = 0; <L26>:; return D.15697; Note that the mult.76, mult.77, mult.78 have a single use and a single def, they could be eliminated. Preprocessed code will be attached. The compilation flags were -O2 -march=i686 The function to look at is AmmountToScroll -- Summary: out of ssa does not delete single def single use variable Product: gcc Version: 4.1.0 Status: UNCONFIRMED Severity: normal Priority: P2 Component: tree-optimization AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: dann at godzilla dot ics dot uci dot edu CC: gcc-bugs at gcc dot gnu dot org GCC target triplet: i686-pc-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23335