quick scan of the start

Henry Cejtin henry@sourcelight.com
Wed, 14 Mar 2001 02:03:04 -0600


In the abstract (and various other places in the introduction) you talk about
intra-procedural control flow, while I would say that it is inter-procedural.
After  all,  all  loops  expressed  via function calls are examples of inter-
procedural control flow.  I would just drop the  word  `intra-procedural'  in
the  first  sentence and also in the third and next-to-last paragraphs of the
introduction.  After all, the point is to expose (make intra-procedural)  the
control flow which is originally inter-procedural.

In  the example in the introduction, you call the call to g non-tail, but it,
like all calls in a program expressed as CPS, is a talk call.  It came from a
non-tail  call  in  the original (direct style) source.  I think that this is
slightly confusing.

In the section on the CPS IL, the idea of using paren's to  represent  return
seems  a  bit goofy.  Note that in the 3 copies of continuation l1, the paren
around s has been lost.  Am I missing something?

It also is a  bit  strange  that  although  procedures  can  return  multiple
results, primitives cannot.

You used the identical symbol to represent the primitive evaulating function
    Prim * Value* -> Value
as  you  did in the section on Contification to represent multi-sets.  (Also,
is this symbol standard for multi-sets?)

Why not state lemma 1 using the negation of R(f).  I.e.,
        If A is a safe analysis, then not R(f) iff A(f) = Uncalled.
Then it is obvious that is just strengthening condition *-1.  I can't  figure
if  a  symbol  for unreached (instead of R for reached) would be better every
where, but it certainly would be better up through here.

The sentence in the first paragraph after the proof to lemma 1
        In order for the transformation to for an analysis A  to  the
        transformation  to  be useful, the an analysis must have A(f)
        not-equal Unknown.
is clearly busted.