Take the following code: struct f { struct { int i; } ff[10]; }; struct f g; int ffff(int i) { int t1 = 0; int i1 = g.ff[t1].i; int i2 = g.ff[i].i; return i1 + i2; }
The gimplfiier will produce at -O0: int i.0; int t1.1; int D.1289; int t1; int i1; int i2; t1 = 0; i.0 = i; i1 = g.ff[i.0].i; t1.1 = t1; i2 = g.ff[t1.1].i; D.1289 = i1 + i2; return D.1289; Notice how there is a t1.0 and i.0, there should not be there as i and t1 are already gimple variables. This might produce a nice speed up for some testcase but I don't know. at -O0, there will be less registers to be allocated so reload should not be as high as before. -- Summary: Gimplifier produces too many temporaries Product: gcc Version: 4.1.0 Status: UNCONFIRMED Severity: minor Priority: P2 Component: middle-end AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: pinskia at gcc dot gnu dot org CC: gcc-bugs at gcc dot gnu dot org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=23401