Re: Argument passing conventions and optimization

nmm1@cus.cam.ac.uk (Nick Maclaren)
1 Nov 2003 12:05:17 -0500

          From comp.compilers

Related articles
Argument passing conventions and optimization ptumati@yahoo.com (pradeep tumati) (2003-10-27)
Re: Argument passing conventions and optimization derkgwen@HotPOP.com (Derk Gwen) (2003-10-31)
Re: Argument passing conventions and optimization fjh@cs.mu.oz.au (Fergus Henderson) (2003-10-31)
Re: Argument passing conventions and optimization marcov@stack.nl (Marco van de Voort) (2003-10-31)
Re: Argument passing conventions and optimization nmm1@cus.cam.ac.uk (2003-11-01)
Re: Argument passing conventions and optimization ptumati@yahoo.com (pradeep tumati) (2003-11-02)
Re: Argument passing conventions and optimization nmm1@cus.cam.ac.uk (2003-11-08)
Re: Argument passing conventions and optimization bobduff@shell01.TheWorld.com (Robert A Duff) (2003-11-08)
Re: Argument passing conventions and optimization robert.thorpe@antenova.com (Rob Thorpe) (2003-11-11)
Re: Argument passing conventions and optimization nmm1@cus.cam.ac.uk (2003-11-11)
| List of all articles for this month |

From: nmm1@cus.cam.ac.uk (Nick Maclaren)
Newsgroups: comp.compilers
Date: 1 Nov 2003 12:05:17 -0500
Organization: University of Cambridge, England
References: 03-10-116 03-10-147
Keywords: code, optimize
Posted-Date: 01 Nov 2003 12:05:17 EST

Fergus Henderson <fjh@cs.mu.oz.au> wrote:
>Our moderator replied:
>
>>[Other than inlining, I don't recall ever seeing an optimization that
>>affected the calling sequence.
>
>There are others, e.g. tail call and sibling call optimization.
>However, although they affect the calling sequence, they do not affect
>the argument passing mechanism.


There are a fair number that do. In addition to that, there are at
least the following classes (each with many variations):


        Ones where arguments were passed in registers for a very fast,
simple calling sequence. This is very common in calls to standard
libraries, and it is sometimes possible to compile code in that mode.


        Ones where secondary stack or global data pointers were not passed
(e.g. in languages with nested block scoping), because the compiler
could tell that the feature would not be used.


        Ones where tracebacks and/or signal handling were not supported,
because certain critical global registers were passed in non-standard
states. Thank heavens, that lunacy is rare.


In the second two cases, the interaction with actual argument passing
was sometimes because the pirated global registers were used for
extra register arguments. The cases (and the one Fergus mentioned)
overlap, of course.




Regards,
Nick Maclaren.


Post a followup to this message

Return to the comp.compilers page.
Search the comp.compilers archives again.