This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [Patch Darwin/PPC] implement out-of-line FPR/GPR saves/restores.



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

Attachment: 180609-darwinppc-ools-diff.txt
Description: Text document





Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]