On Thu, 2005-03-03 at 11:00 +0000, john.gill@xxxxxxxxxxxx wrote: > I'm investigating some performance issues with the SPARC > and IA64 ports. I've included some sample code and the > resulting assembler produced on both SPARC + IA64. > In the function below, writec; fp->length is loaded > twice causing a fairly expensive stall for load data > in the processor pipeline. See the code.c below. > > > But why doesn't gcc recognise that fp->Length is already > kept in a register? Is this down to pointer aliasing? Most likely, yes GCC isn't very good at disambiguating pointers to structures. I'm working on this, and hopefully in a few months it will be much better.