Oops, replied to the wrong message (that's why there was a "(COPY)" there). "David L. Nicol" wrote: > > Steve Fink wrote: > > > It's standard semantic analysis. Both your taintedness analysis and my > > reachability analyses can be fully described by specifying what things > > generate the characteristic you're analyzing, what things block (in the > > literature, "kill") it, and the transfer rules. It's often not the best > > way of implementing it, since the fully general framework can be pretty > > slow, but it's a concise way of describing things that you'll find in > > many textbooks. They talk in terms of maintaining GEN and KILL sets and > > describing when to add, subtract, union, and intersect the incoming & > > outgoing GENs and KILLs. > > So what would be involved in adding hooks for arbitrary semantic analysis? I suspect the hardest part is figuring out how primitive operations describe themselves for an analysis. (It'll need a neo-XS interface, too.) > What language features can be described to allow for introduction of > arbitrary SA passes? At what levels? I was thinking these sorts of things could be the same way as my $var : attributes. Classify attributes as explicit, default, or compiler-generated. The compiler-generated ones would be read-only to regular code. Or something like that. > What's a good introductory glossary of SA terms? Things get confusing > with many reinvented wheels rolling around. There's a badly formatted mention at http://www.google.com/search?q=cache:compilers.iecc.com/comparch/article/86-03-009+GEN+KILL&hl=en (I couldn't reach the original page). They refer to Aho, Sethi, and Ullman, in "Compilers: Principles, Techniques, and Tools", p. 608 -- that's the dragon book. I think that's where I first read it, though I'm not sure I liked their description all that well. Here's random slide that talks about it: http://www.cs.utexas.edu/users/djimenez/cbz/node7.html