This is the mail archive of the
mailing list for the GCC project.
Re: [gofrontend-dev] Re: [PATCH 03/13] HACK! Allow the static chain to be set from C
- From: Richard Biener <richard dot guenther at gmail dot com>
- To: Richard Henderson <rth at redhat dot com>
- Cc: Peter Collingbourne <pcc at google dot com>, Ian Lance Taylor <iant at google dot com>, gcc-patches <gcc-patches at gcc dot gnu dot org>, "libffi-discuss at sourceware dot org" <libffi-discuss at sourceware dot org>, "gofrontend-dev at googlegroups dot com" <gofrontend-dev at googlegroups dot com>
- Date: Mon, 13 Oct 2014 10:10:20 +0200
- Subject: Re: [gofrontend-dev] Re: [PATCH 03/13] HACK! Allow the static chain to be set from C
- Authentication-results: sourceware.org; auth=none
- References: <1412973773-3942-1-git-send-email-rth at redhat dot com> <1412973773-3942-4-git-send-email-rth at redhat dot com> <CAKOQZ8xivpespK-4HwXJrgpH72K0eHyJhpDzftnJHvdNCOTJZg at mail dot gmail dot com> <CAMn1gO7vJOcNi218p9m32de_rrnKBrUcGF-EKP3dJwaL+8BtUw at mail dot gmail dot com> <CAMn1gO50doTzg4tfVeJ_d-fX0Y1t=Fh56aaCHLFbR0ntnMwM8Q at mail dot gmail dot com> <5438B0DD dot 70309 at redhat dot com>
On Sat, Oct 11, 2014 at 6:23 AM, Richard Henderson <firstname.lastname@example.org> wrote:
> On 10/10/2014 06:42 PM, Peter Collingbourne wrote:
>> A colleague has suggested a perhaps nicer syntax:
>> __builtin_call_chain(pointer, call) where call must be a call expression
> I like this.
> Unlike the other suggestions, it doesn't mess with the parsing of the "regular"
> part of the function call. And, depending on what point the builtin is lowered
> and applied to the AST, it might not require any parsing changes at all.
> I'll have a look at this next week. Thanks.
Does the frontend know that the call expects a static chain? If so
I like Ians suggestion more:
How crazy would it be to move __builtin_call_chain into the function
arguments, as in
function(a1, a2, __builtin_call_chain(pointer))
This __builtin_call_chain call would be removed from the argument list
so type checking would only look at a1, a2. It would just set the
static chain value. That at least puts the call_chain in the right
place, which is a special kind of function argument.