Path: csiph.com!x330-a1.tempe.blueboxinc.net!newsfeed.hal-mli.net!feeder3.hal-mli.net!nx01.iad01.newshosting.com!newshosting.com!69.16.185.16.MISMATCH!npeer02.iad.highwinds-media.com!news.highwinds-media.com!feed-me.highwinds-media.com!border3.nntp.dca.giganews.com!border1.nntp.dca.giganews.com!border4.nntp.dca.giganews.com!border2.nntp.dca.giganews.com!nntp.giganews.com!news.iecc.com!nerds-end From: Walter Banks Newsgroups: comp.compilers Subject: Re: optimizing Date: Sun, 14 Aug 2011 06:29:32 -0400 Organization: Aioe.org NNTP Server Lines: 31 Sender: news@iecc.com Approved: comp.compilers@iecc.com Message-ID: <11-08-022@comp.compilers> References: <11-08-015@comp.compilers> NNTP-Posting-Host: news.iecc.com X-Trace: gal.iecc.com 1313368260 26687 64.57.183.58 (15 Aug 2011 00:31:00 GMT) X-Complaints-To: abuse@iecc.com NNTP-Posting-Date: Mon, 15 Aug 2011 00:31:00 +0000 (UTC) Keywords: optimize Posted-Date: 14 Aug 2011 20:31:00 EDT X-submission-address: compilers@iecc.com X-moderator-address: compilers-request@iecc.com X-FAQ-and-archives: http://compilers.iecc.com Xref: x330-a1.tempe.blueboxinc.net comp.compilers:239 glen herrmannsfeldt wrote: > It seems to me, though, that in the case of RISC, and even more in the > case of VLIW processors like Itanium, delaying the final optimization > and code generation pass would be useful. ... > [This is pretty standard in the toolchains for embedded processors. I > gather that the ARM compilers generate intermediate code, and all the > optimization and code generation happens in the linker. -John] To add to John's comment. We have been writing and selling compilers for embedded systems for a long time. Since the early 90's we have been doing our code generation at link time. Embedded systems are unique to make this attractive. The application code is almost never hosted, fast small code is highly desired and they are compile once run often systems. Link time code generation offers many optimization possibilities. The biggest change is the mindset change to full application optimization. There are some downsides. Reused code and libraries have the potential to behave differently within some applications because each link could generate different sequences for the same source module. Regards -- Walter Banks Byte Craft Limited http://www.bytecraft.com