SIMPLE: A language-independent tree IR

Geoff Keating geoffk@geoffk.org
Thu Jan 3 12:36:00 GMT 2002


> Date: Thu, 3 Jan 2002 10:38:41 -0800
> Cc: Dale Johannesen <dalej@apple.com>, geoffk@redhat.com,
>         toon@moene.indiv.nluug.nl, gcc@gcc.gnu.org
> From: Dale Johannesen <dalej@apple.com>
> 
> 
> On Thursday, January 3, 2002, at 10:28 AM, Paul Koning wrote:
> 
> >>>>>> "Geoff" == Geoff Keating <geoffk@geoffk.org> writes:
> >  Geoff> You're probably thinking of
> >
> >  Geoff> T = (f() + g()) compared to T = (f(), g())
> >
> >  Geoff> in the first one, the compiler is (probably) permitted to call
> >  Geoff> g before f, but not in the second.
> >
> > The comma operator rule is pretty strange, given that the third
> > example:
> >
> > 	T = foo (f(), g(x))
> > (i.e., comma a actual argument separator) DOES allow g to be called
> > before f...
> 
> And what of this case:
> 
>     T = foo (f(), (g(x), h(y)) )
> 
> Is the call ordering g, f, h legal?
> Take a look at the example in 3.3.2.2 (c89) before you answer...

I believe this issue was dealt with in C99.  In C89, there was a
question as to even whether the instructions of f and g could be
interleaved; in C99, a more formal specification was adopted and I
believe the answer came out 'no'.

-- 
- Geoffrey Keating <geoffk@geoffk.org> <geoffk@redhat.com>



More information about the Gcc mailing list