Re: [RS6000] asynch exceptions and unwind info

2011-08-01 Thread Alan Modra
On Fri, Jul 29, 2011 at 10:28:28PM +0930, Alan Modra wrote: > libgcc/ > * config/rs6000/linux-unwind.h (frob_update_context <__powerpc64__>): > Restore for indirect call bcrtl from correct stack slot, and only > if cfa+40 isn't valid. > gcc/ > * config/rs6000/rs6000-protos.h

Re: [RS6000] asynch exceptions and unwind info

2011-07-29 Thread Alan Modra
On Fri, Jul 29, 2011 at 09:16:09AM -0400, David Edelsohn wrote: > Which has the problem? Which are you trying to solve? And how is > your change solving it? Michael's save_toc_in_prologue emit_frame_save writes unwind info for the wrong frame. That r2 save is the current r2. What we need is in

Re: [RS6000] asynch exceptions and unwind info

2011-07-29 Thread David Edelsohn
On Thu, Jul 28, 2011 at 9:27 PM, Alan Modra wrote: > Right, but I was talking about the normal case, where the unwinder > won't even look at .glink unwind info. > >> The whole problem is that toc pointer copy in 40(1) is only valid >> during indirect call sequences, and iff ld inserted a stub?  I

Re: [RS6000] asynch exceptions and unwind info

2011-07-29 Thread Alan Modra
On Fri, Jul 29, 2011 at 10:57:48AM +0930, Alan Modra wrote: > Except that any info about r2 in an indirect call sequence really > belongs to the *called* function frame, not the callee. I woke up > this morning with the realization that what I'd done in > frob_update_context for indirect call sequ

Re: [RS6000] asynch exceptions and unwind info

2011-07-28 Thread Alan Modra
On Thu, Jul 28, 2011 at 12:09:51PM -0700, Richard Henderson wrote: > Well, even if we're not able to hoist the R2 store, we may be able > to simply add REG_CFA_OFFSET and REG_CFA_RESTORE notes to the insns > in the stream. You'd need to mark every non-local call with something that says R2 may be

Re: [RS6000] asynch exceptions and unwind info

2011-07-28 Thread Alan Modra
On Thu, Jul 28, 2011 at 11:49:16AM -0700, Richard Henderson wrote: > On 07/28/2011 12:27 AM, Alan Modra wrote: > > On Wed, Jul 27, 2011 at 03:00:45PM +0930, Alan Modra wrote: > >> Ideally what I'd like to > >> do is have ld and gcc emit accurate r2 tracking unwind info and > >> dispense with hacks

Re: [RS6000] asynch exceptions and unwind info

2011-07-28 Thread Richard Henderson
On 07/28/2011 12:02 PM, David Edelsohn wrote: > The other problem is hoisting the store into the prologue is not > always profitable for performance. It should be better once shrink > wrapping is implemented. Currently the PPC ABI may perform a lot of > stores in the prologue if the function *may

Re: [RS6000] asynch exceptions and unwind info

2011-07-28 Thread David Edelsohn
On Thu, Jul 28, 2011 at 2:49 PM, Richard Henderson wrote: > The whole problem is that toc pointer copy in 40(1) is only valid > during indirect call sequences, and iff ld inserted a stub?  I.e. > direct calls between functions that share toc pointers never save > the copy? > > Would it make sense

Re: [RS6000] asynch exceptions and unwind info

2011-07-28 Thread Richard Henderson
On 07/28/2011 12:27 AM, Alan Modra wrote: > On Wed, Jul 27, 2011 at 03:00:45PM +0930, Alan Modra wrote: >> Ideally what I'd like to >> do is have ld and gcc emit accurate r2 tracking unwind info and >> dispense with hacks like frob_update_context. If ld did emit accurate >> unwind info for .glink,

Re: [RS6000] asynch exceptions and unwind info

2011-07-28 Thread Alan Modra
On Wed, Jul 27, 2011 at 03:00:45PM +0930, Alan Modra wrote: > Ideally what I'd like to > do is have ld and gcc emit accurate r2 tracking unwind info and > dispense with hacks like frob_update_context. If ld did emit accurate > unwind info for .glink, then the justification for frob_update_context

Re: [RS6000] asynch exceptions and unwind info

2011-07-27 Thread David Edelsohn
On Wed, Jul 27, 2011 at 1:30 AM, Alan Modra wrote: >        * config/rs6000/linux-unwind.h (frob_update_context <__powerpc64__>): >        Leave r2 REG_UNSAVED if stopped on the instruction that saves r2 >        in a plt call stub.  Do restore r2 if stopped on bctrl. Okay. Thanks, David