On 01/27/2012 05:18 PM, Dave Korn wrote: > On 27/01/2012 17:16, Andrew Haley wrote: >> On 01/27/2012 05:14 PM, Dave Korn wrote: >>> On 27/01/2012 17:01, Andrew Haley wrote: >>>> On 01/27/2012 04:46 PM, Andreas Krebbel wrote: >>>>> Starting with this IRA patch: >>>>> http://gcc.gnu.org/ml/gcc-patches/2011-10/msg00028.html >>>>> __divdi3 does *not* need a stack frame at all. >>>>> >>>>> So the CFAs of __divdi3 and probe_1 are the same! >>>> I'm confused. >>>> >>>> But __divdi3 should have been compiled with enough unwinder data >>>> that it can be found; it should not matter whether __divdi3 has >>>> a stack frame or not. >>>> >>>> So why doesn't __divdi3 have a CFA of its own? >>> Unless I've misunderstood, it's because the CFA *is* the stack frame >>> (base?) >>> pointer. >> >> Ah, it's not that it has no stack frame, it's that it has no >> stack adjustment at all, not even a push? > > Well the return address might get pushed but if the CFA is the stack frame > base rather than current stack pointer, that won't change.
Yabbut, in such functions the dwarf debug info can set the CFA to be SP. I'm pretty sure I've seen that done in frameless functions. Andrew.