This is the mail archive of the
mailing list for the GCC project.
Re: SIMPLE: A language-independent tree IR
- From: Joe Buck <jbuck at synopsys dot COM>
- To: rth at redhat dot com (Richard Henderson)
- Cc: toon at moene dot indiv dot nluug dot nl (Toon Moene),jsm28 at cam dot ac dot uk (Joseph S. Myers),dnovillo at redhat dot com (Diego Novillo), gcc at gcc dot gnu dot org
- Date: Wed, 2 Jan 2002 16:36:28 -0800 (PST)
- Subject: Re: SIMPLE: A language-independent tree IR
(fortran parentheses rule)
> On Thu, Jan 03, 2002 at 01:05:23AM +0100, Toon Moene wrote:
> > Still, I feel this is different from the "sequence point" concept of the
> > C language, but I cannot come up with a simple example that shows it.
> Yes, it is different.
The sequence points form a strict time order. Given sequence points
S1,S2,S3 all external side effects (e.g. volatile reads and writes;
calls to external functions we don't fully understand) between S1 and
S2 have to be completed before any side effects between S2 and S3 start.
But then, the proposed low-level form will have the existing C statements
together with the simple triples, so I guess sequence points are like
With Fortran's parentheses, everything inside the parentheses has to be
treated as one expression, we can't transform it in ways that violate
this, but there's no requirements on the time order; we can interleave
evaluations if we want. Maybe nothing is needed for this in the "low
level tree" code at all, if the rule is used that no transformations that
alter the results are allowed.
And then there is a third case, were we have groups of instructions that
have to be executed as atomic units but we don't care which group is
first. For example, consider a language in which arguments to a function
can be computed in any order but the computation of the arguments can't
be interleaved. This differs from sequence points.