------- 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