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. So I expect this could happen with inline and nested functions too. (Or do nested functions set up a stack frame? I don't know.) cheers, DaveK