------- Additional Comments From steven at gcc dot gnu dot org 2005-02-07 23:16 ------- Note the following: x_4 not coalesced with x --> New temp: 'x.0' x_5 not coalesced with x.0 --> New temp: 'x.1' Not very useful, because x_4 and x_5 have no uses left. So you start with this: foo (xD.1447, aD.1448, bD.1449) { intD.0 D.1452; # BLOCK 0 # PRED: ENTRY [100.0%] (fallthru,exec) xD.1447_3 = aD.1448_1 + bD.1449_2; xD.1447_4 = aD.1448_1 * xD.1447_3; xD.1447_5 = bD.1449_2 * xD.1447_4; return xD.1447_5; # SUCC: EXIT [100.0%] } and you end with this: foo (xD.1447, aD.1448, bD.1449) { intD.0 x.1D.1456; intD.0 x.0D.1455; intD.0 D.1452; # BLOCK 0 # PRED: ENTRY [100.0%] (fallthru,exec) return bD.1449 * aD.1448 * (aD.1448 + bD.1449); # SUCC: EXIT [100.0%] } Note the redundant temporaries.
-- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=17549