> Will it help > > http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54315 > http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28831
It won't help everywhere, since it's only for architectures that return structures in registers, so x86-64 but not x86 for example. 54315 pertains to single-fielded unions and uses a different code path (copy_blkmode_from_reg) although the issue is similar. I'll have a look. It will help 28831 on x86-64 if the structure is returned in registers, e.g. struct val_t { int a, b, c; }; extern struct val_t foo(); extern int bar(struct val_t); int main() { return bar(foo()); } The patch eliminates the two extra stores mentioned in comment #15. I'll add a reference to this one. -- Eric Botcazou