[comp.compilers] Interprocedural dataflow analysis question

len@ai.toronto.edu (Leonard Vanek) (02/08/89)

Can someone provide me with the most recent references on the subject
of interprocedural dataflow analysis? I am specifically interested in
obtaining an EXACT (rather than conservative) solution for the values
(or expressions) killed by a procedure call -- even in the presence of
recursive calls within the procedure.
--
Leonard Vanek                  UUCP: ... uunet!attcan!lsuc!array!len
Array Systems Computing Inc.    or ... utzoo!dciem!array!len
5000 Dufferin St. Suite 200     or lsuc!array!len@ai.toronto.edu
Downsview, Ont. M3H 5T5        Phone: (416) 736-0900
Canada                         FAX:   (416) 736-4715
[Good luck, sounds like the halting problem to me.  -John]
--
Send compilers articles to ima!compilers or, in a pinch, to Levine@YALE.EDU
Plausible paths are { decvax | harvard | yale | bbn}!ima
Please send responses to the originator of the message -- I cannot forward
mail accidentally sent back to compilers.  Meta-mail to ima!compilers-request

worley@EDDIE.MIT.EDU (Dale Worley) (02/13/89)

   From: encore!lsuc!array!len@ai.toronto.edu (Leonard Vanek)

   I am specifically interested in
   obtaining an EXACT (rather than conservative) solution for the values
   (or expressions) killed by a procedure call.

   [Good luck, sounds like the halting problem to me.  -John]

Yeah, it's the halting problem.  Consider (in C):

	int x(int i)
		{
		if (f(i))
			global_variable = 0;
		}

All you have to do is determine if f(i) can ever return true.

A really interesting aspect of interprocedural analysis arises if
functions are first-class values (for instance, in Scheme), so to do
interprocedural analysis you have to first determine which functions
(lambdas) a given call might activate.  Of course, inside a lambda the
potential values of its bound variables depends on which calls might
activate it, and those bound variables might be used as the functions
of calls...  See "Control Flow Analysis in Scheme" by Olin Shivers
(Proceedings SIGPLAN Conference on Prog. Lang. Design and Impl., June
1988).

Dale
[From think!compass!worley@EDDIE.MIT.EDU (Dale Worley)]
--
Send compilers articles to ima!compilers or, in a pinch, to Levine@YALE.EDU
Plausible paths are { decvax | harvard | yale | bbn}!ima
Please send responses to the originator of the message -- I cannot forward
mail accidentally sent back to compilers.  Meta-mail to ima!compilers-request

pinter-ron@CS.YALE.EDU (Ron Pinter) (02/14/89)

Two (but may be not *the most*) recent references are

    David Callahan: "The Program Summary Graph and Flow-sensitive
    Interprocedural Data Flow Analysis", and

    Keith D. Cooper and Ken Kennedy: "Interprocedural Side-effect
    Analysis in Linear Time".

They both appear in the Proc of the SIGPLAN'88 Conf on Programming Language
Design and Implementation (available as SIGPLAN Notices, June 1988), on pp.
47-56 and 57-66, respectively.
[From pinter-ron@CS.YALE.EDU (Ron Pinter)]
--
Send compilers articles to ima!compilers or, in a pinch, to Levine@YALE.EDU
Plausible paths are { decvax | harvard | yale | bbn}!ima
Please send responses to the originator of the message -- I cannot forward
mail accidentally sent back to compilers.  Meta-mail to ima!compilers-request