quick scan of the start

Matthew Fluet Matthew Fluet <fluet@CS.Cornell.EDU>
Wed, 14 Mar 2001 11:57:35 -0500 (EST)


> 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.

I see where Henry is coming from, but I don't know the best way to fix it.
I'm looking at the abstract and I think I can rework that to drop the
reference to intra-procedural control flow and pull in a reference to SSA,

Otherwise, I didn't have any issues with the other comments.
 
> 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.

Fixed.

> 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?

I went ahead and added the ()'s around s for the vector sum example.  

> 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?)

I can't find anything standard for multi-sets; closest thing I found for
the collection of multisets of a set was the following: P^{m:n}(S), which
was meant to represent the collection of multisets with at least m
elements and at most n elements, where elements are drawn from the set S.
For all multisets, I guess you would want P^{0:\omega}(S).

But, that seems like too much notation; I'm just going to add a sentence
saying "We write M(S) for the set of all multisets of a set S."  but I'll
ask around if anyone knows standard notation.

I don't know what to do about the meaning function; change it to some
Greek letter? 

> One other thing, the sentence near the start of the Contification section
>        By  choosing  to  define  the  collection of nontail and tail
>        calls as multisets, rather than sets, we remain  faithful  to
>        our  implementation  of  the  analyses  in  which  calls  are
>        processed by iteration over the program.
> doesn't mean much to me.  I would just drop it.  After all, the point is that
> the  tail  calls  and  non-tail calls ARE multi-sets (i.e., there can be more
> than one with the same information).  I don't think you need to say any thing
> about  the  fact that you have not collapsed multiple occurrences of the same
> data to one occurrence.

I'm happy with dropping it; I had originally wanted to point out that in
the implementation we never explicitly construct the nontail and tail
multisets.  The whole multi-set thing is a little bit subtle; really, I
needed to add that in to make the definition of the Acall analysis
correspond to the implementation.

> 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.

Easy enough.

> The sentence in the first paragraph after the proof to lemma 1
> is clearly busted.

Fixed.