This is the mail archive of the
mailing list for the GCC project.
Re: dwarf2/ACCUMULATE_OUTGOING_ARGS fix
- To: Jan Hubicka <jh at suse dot cz>
- Subject: Re: dwarf2/ACCUMULATE_OUTGOING_ARGS fix
- From: Jason Merrill <jason at redhat dot com>
- Date: 22 Feb 2001 00:47:51 +0000
- Cc: Jeffrey A Law <law at redhat dot com>, patches at x86-64 dot org, gcc-patches at gcc dot gnu dot org
- References: <20010102200705.H6101@atrey.karlin.mff.cuni.cz><2114.978494367@upchuck><20010103155639.C13216@atrey.karlin.mff.cuni.cz><firstname.lastname@example.org><20010221174921.D8978@atrey.karlin.mff.cuni.cz>
>>>>> "Jan" == Jan Hubicka <email@example.com> writes:
>> > Simply because the i386 "pascal" convention makes function to
>> > deallocate the stack after return. This needs to be handled with
>> > -maccumulate-outgoing-args by adjusting stack back after the return.
>> Why does this need to happen for EH unwinding? If we're returning via
>> exception, we won't have run the epilogue which would have deallocated
>> the stack. The args_size stuff is there to handle caller-pop semantics.
> You've missed what I am saying. The sequence is
> pascal function call changing stack pointer
> <some code>
> lazy update of stack back to original value
> <some branch>
> If exception happends in <some code>, the information about stack offset is
> bogus. This is rare case, but can actually happen.
It can? But the adjustment is emitted immediately after the call, and only
calls can throw. Surely the scheduler wouldn't move a stack adjustment
past a call?