On 14 Oct 2011, at 10:29, Mike Stump wrote: > On Oct 14, 2011, at 2:05 AM, Iain Sandoe wrote: >> This implements their use and also the GPRs - the latter makes an >> appreciable reduction in code size, > >> OK for trunk? > > Ok. Watch for problems with async stack walking (hitting sample in > Activity Monitor, or the walking done by CrashReporter)... that's > the only thing I can think of that might be strange. This has taken some time to apply because of various bootstrap issues (version applied is attached) In answer to your observation; I didn't expect problems with FPR saves because the vendor's tools implement those. To test what you suggested I built some code that dropped down a few stack levels (with saves of FPR/GPR) and then either aborts or spins on a sleep. The crashlogs from the abort() and the instrumentation samples from the sleep were OK. ==== During doing this (and checking crosses to aix and eabisim) I noticed the following in rs6000/sysv4.h: /* And similarly for general purpose registers. */ #define GP_SAVE_INLINE(FIRST_REG) ((FIRST_REG) < 32 \ && !optimize_size) which gives rise to code (with -Os) like: main: mr 11,1 #, stwu 1,-504(1) #,, mflr 0 #, bl _savegpr_31 # lis 31,.LANCHOR0@ha # tmp137, which I doubt is what was intended .... ... copying David in case he feels that should be amended. cheers Iain