|Intermediate Representation email@example.com (2001-10-10)|
|Re: Intermediate Representation firstname.lastname@example.org (Jon Beniston) (2001-10-12)|
|Re: Intermediate Representation email@example.com (2001-10-12)|
|Intermediate Representation napi@rangkom.MY (1990-08-07)|
|Re: Intermediate Representation briscoe-duke@CS.YALE.EDU (Duke Briscoe) (1990-08-08)|
|Re: Intermediate Representation firstname.lastname@example.org (Preston Briggs) (1990-08-08)|
|Re: Intermediate Representation email@example.com (Michael O'Donnell (508)392-2915) (1990-08-09)|
|Re: Intermediate Representation grover@brahmand.Eng.Sun.COM (1990-08-09)|
|Re: Intermediate Representation firstname.lastname@example.org (1990-08-10)|
|Re: Intermediate Representation email@example.com (1990-08-12)|
|Re: Intermediate Representation grover@brahmand.Eng.Sun.COM (1990-08-12)|
|Re: Intermediate Representation firstname.lastname@example.org (1990-08-12)|
|Re: Intermediate Representation email@example.com (1990-08-12)|
|Re: Intermediate Representation convex!csmith@uunet.UU.NET (1990-08-12)|
|[14 later articles]|
|From:||grover@brahmand.Eng.Sun.COM (Vinod Grover)|
|Keywords:||code, optimize, design|
|Organization:||Sun Microsystems, Mt. View, Ca.|
|Date:||Thu, 09 Aug 90 18:06:27 GMT|
In article <1990Aug08.firstname.lastname@example.org> Preston Briggs <email@example.com> writes:
>AST's seem too high-level for doing lots of optimization. We want the
>details of array accesses, etc. exposed to the optimizer.
>Actually, I'll qualify this a little. I believe there are many optimizations
>that can be carried out most effectively on a high-level representation (for
>example, those requiring dependence analysis) and many that should be carried
>out on a low level representation (e.g., CSE elimination, strength
>reduction). This is the sort of approach we've taken locally.
First of all, there is no reason why an AST based IR cannot have low-level
features (such as array/memory accesses). The Bliss-11 compiler had the '.'
(dot) operator for representing memory fetches. One nice feature property of
the dot operator was that it could be used, both, in lhs and rhs position of
an assignment operator. e.g. a[i] would be represented as .(a+.i) This made
a lot of optimizations quite simple and uniform. e.g a memory access could
be treated as a CSE.
Second, as Bliss-11 showed global CSE elimination can be done at a high
level. Similarly, strength reduction isnt that hard at a high level. Karl
Ottenstein showed, in an IEEE paper several years ago, that strength
reduction is easy to do on PDGs and can easily be extended to ASTs. (I do
not have the reference handy but can post it, if anyone is interested.)
Return to the
Search the comp.compilers archives again.