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.