Path: utzoo!utgpu!news-server.csri.toronto.edu!mailrus!uwm.edu!zaphod.mps.ohio-state.edu!samsung!noose.ecn.purdue.edu!cadlab1.ecn.purdue.edu!3ksnn64 From: 3ksnn64@cadlab1.ecn.purdue.edu (Joe Cychosz) Newsgroups: comp.arch Subject: Re: Inlining subroutines at link time Message-ID: <1990Jul6.010720.27267@ecn.purdue.edu> Date: 6 Jul 90 01:07:20 GMT References: <1990Jul3.194348.21178@msuinfo.cl.msu.edu> Sender: news@ecn.purdue.edu (USENET news) Organization: Purdue University Engineering Computer Network Lines: 31 In article <1990Jul3.194348.21178@msuinfo.cl.msu.edu> riordanmr@clvax1.cl.msu.edu (Mark Riordan) writes: >I just came across a CDC NOS/VE manual describing a facility to >inline FORTRAN routines after compilation (essentially during linking). >I no longer have access to a NOS/VE system, so I don't know how well >this works, but it seems like a fairly unique feature to me. On the CYBER 990/995 it is almost essential. The call-return instruction takes so damn long (3 micro-seconds if my memory is correct). I spent quite a bit of time vectorizing codes only to have the subroutine call eat up most of my efforts. Thus they CDC had HRC develope the afterburner which examined the unbounded object and inserted appropriate code segments inline to avoid subroutine calls. I believe on the CYBER 2000, the performance of call-return has been greatly improved. >Have you folks ever heard of a similar system? Some one in a later note pointed out MIPS and there UCODE approach. Digital Productions used a vertual register scheme for much of thier code and thier optimizer then scheduled actual register usage for the Cray XMP. >The afterburned performs a cost/benefit analysis to determine if a >specific routine should be brought inline. If a subroutine is called in >two places, it might be profitable to inline the subroutine in one >instance and not the other." I wonder how it makes this decision, since profitability depends on the number of times it is called. One final note: The afterburner is not limited to only FORTRAN. At that point it is only looking at the object code.