This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: unwind, x86, DW_CFA_GNU_args_size
- From: Alexandre Oliva <aoliva at redhat dot com>
- To: Ian Lance Taylor <iant at google dot com>
- Cc: Geoffrey Keating <geoffk at apple dot com>, GCC Mailing List <gcc at gcc dot gnu dot org>, Jason Merrill <jason at redhat dot com>
- Date: Wed, 20 Sep 2006 03:06:29 -0300
- Subject: Re: unwind, x86, DW_CFA_GNU_args_size
- References: <70FBD75A-1F46-4140-AEAA-BAA54753452B@apple.com> <m3ac61o8ss.fsf@localhost.localdomain> <645502A6-CF8F-4803-B829-C5606EC099AF@apple.com> <m3wt95mrkq.fsf@localhost.localdomain>
On Aug 18, 2006, Ian Lance Taylor <iant@google.com> wrote:
> Geoffrey Keating <geoffk@apple.com> writes:
>> On 18/08/2006, at 5:42 PM, Ian Lance Taylor wrote:
>> > We could avoid nesting memcpy calls on ACCUMULATE_OUTGOING_ARGS
>> > machines, in which case I think Alex's patch is unnecessary.
>> > I'm not sure about your option 1--Alex didn't say that he couldn't
>> > reproduce the bug in mainline, he said he didn't have a test case for
>> > the specific case of memcpy popping the arguments off the stack on
>> > return.
>> I'm not sure how memcpy gets involved here. memcpy doesn't throw, so
>> there's no need for any args_size data for it---in fact, it's a small
>> optimization bug that such data gets reflected in the EH information
>> at all.
>> Alex said that he couldn't find a case that didn't involve memcpy.
>> Maybe an appropriate 'fix' is to revert the patch and put an assert
>> in calls.c to ensure that a nested function call must be nothrow?
> That seems quite plausible to me. Alex?
For the record, as far as I could tell, the only case of nested
function calls surviving gimplification were function calls introduced
by the call machinery itself, and that would be memcpy to copy
arguments to the right spot on the stack.
--
Alexandre Oliva http://www.lsd.ic.unicamp.br/~oliva/
Secretary for FSF Latin America http://www.fsfla.org/
Red Hat Compiler Engineer aoliva@{redhat.com, gcc.gnu.org}
Free Software Evangelist oliva@{lsd.ic.unicamp.br, gnu.org}