Re: Intermediate code design

David Chase <>
6 Jan 1998 22:41:26 -0500

          From comp.compilers

Related articles
Intermediate code design (David Stone 5887) (1998-01-05)
Re: Intermediate code design (1998-01-06)
Re: Intermediate code design (David Chase) (1998-01-06)
Re: Intermediate code design (Charles Fiterman) (1998-01-08)
Re: Intermediate code design (Christian von Roques) (1998-01-08)
| List of all articles for this month |

From: David Chase <>
Newsgroups: comp.compilers
Date: 6 Jan 1998 22:41:26 -0500
Organization: Natural Bridge LLC
References: 98-01-019
Keywords: design, optimize

David Stone 5887 wrote:

> (1) Updating operations.

> Suppose the source language supports updating operations, for example
> x += y in C.
> Should this become
> x = x + y

It depends. Generally, I would say yes, especially if you intend
to optimize the code.

> (2) Function calls, especially pure function calls

> If a function does not have side effects, then it seems to me that
> there is no need for dataflow analysis to give up when it finds a
> function call, and so it would help if the design of the intermediate
> code facilitated dataflow analysis over function calls.

It's possible, but I'm not sure that you'd get sufficient bang for
your buck here. Again, it depends. If your triples are at a low
level, then there's no such thing as a "pure function" because
registers will be trashed, etc.

> One scheme which, I think, would work is:
> destination 1st operand operation 2nd operand
> arglist = make_empty [no operands]
> arglist = arglist append arg1
> arglist = arglist append arg2
> ...
> retval = functionname apply arglist
> Here all the above operations can be treated like simple arithmetic
> operations for the purpose of dataflow analysis.

True, except that if I say "x + y, where x = 3 and y = 4" then
I can turn it into "7". Your "arithmetic" doesn't generalize
in any useful way.

> However, I have not read of this approach anywhere: is there some
> hidden snag, or is there a better approach?

I think this happens pretty often, but people don't do much with

> Any pointers to articles or books would be very welcome.

There's some pointers to papers at

Don't read just one -- the original and the revised versions
are a good deal different, and the reasons why are some of the
things that you might want to know.

David Chase,

Post a followup to this message

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