------- Comment #5 from gcc at breakpoint dot cc 2010-06-03 20:17 ------- >So clearly the caller's assembly is wrong; it should be saving all 64-bits of >r9 (volatile gpr) first.
Yes, that it what I've been pointing out. There is an optimization in the stack code which uses 32bit stores/loads if no double types are used. I looks to me like the functions branch and register saves are done by the RTL and it does not know about the 64bit GPRs here. This is only a guess, I'm not a gcc guy. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44364