Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: version B 2.10.2 9/5/84; site uvacs.UUCP Path: utzoo!watmath!clyde!bonnie!akgua!whuxlm!harpo!decvax!mcnc!ncsu!uvacs!mac From: mac@uvacs.UUCP (Alex Colvin) Newsgroups: net.lang Subject: Re: Re: Recursion Message-ID: <2367@uvacs.UUCP> Date: Wed, 11-Sep-85 16:15:13 EDT Article-I.D.: uvacs.2367 Posted: Wed Sep 11 16:15:13 1985 Date-Received: Sat, 14-Sep-85 05:52:51 EDT References: <909@oddjob.UUCP> <163@ho95e.UUCP> <367@ttrdc.UUCP> <624@mmintl.UUCP> <712@gitpyr.UUCP> <448@sbcs.UUCP> Organization: U.Va. CS dept. Charlottesville, VA Lines: 8 PL/I compilers descended from Multics PL/I do this kind of analysis. PL/I procedures are pretty messy, so there's good reason to optimize. The transitive closure of a procedure call graph tells who calls whom. This isn't too large, as PL/I has nested scopes, each of which tends to be small. External procedures are always considered potentially recursive. A procedure used for anything but a call (e.g. as a parameter or assigned to a variable) are also potentially recursive. This turns out to do a good job.