| Related articles |
|---|
| [2 earlier articles] |
| Re: deadcode optimization broeker@physik.rwth-aachen.de (Hans-Bernhard Broeker) (2001-03-01) |
| Re: deadcode optimization Bjorn.DeSutter@rug.ac.be (Bjorn De Sutter) (2001-03-01) |
| Re: deadcode optimization guerby@acm.org (Laurent Guerby) (2001-03-01) |
| Re: deadcode optimization stonybrk@fubar.com (Norman Black) (2001-03-04) |
| Re: deadcode optimization fjh@cs.mu.OZ.AU (2001-03-08) |
| Re: deadcode optimization tgi@netgem.com (2001-03-08) |
| Re: deadcode optimization rog@vitanuova.com (2001-03-08) |
| Re: deadcode optimization stonybrk@ix.netcom.com (Norman Black) (2001-03-10) |
| Re: deadcode optimization stonybrk@ix.netcom.com (Norman Black) (2001-03-10) |
| Re: deadcode optimization fjh@cs.mu.OZ.AU (2001-03-10) |
| Re: deadcode optimization fjh@cs.mu.OZ.AU (2001-03-12) |
| Re: deadcode optimization stonybrk@ix.netcom.com (Norman Black) (2001-03-14) |
| Re: deadcode optimization stonybrk@ix.netcom.com (Norman Black) (2001-03-14) |
| [4 later articles] |
| From: | rog@vitanuova.com (Roger Peppé) |
| Newsgroups: | comp.compilers |
| Date: | 8 Mar 2001 13:16:02 -0500 |
| Organization: | Compilers Central |
| References: | 01-03-012 01-03-022 01-03-034 |
| Keywords: | linker, optimize, comment |
| Posted-Date: | 08 Mar 2001 13:16:02 EST |
Norman Black wrote:
> "Smart linking" is trivial for a compiler do handle and have ALL
> linkers in existence support the unused code "removal".
>
> All that need be done is have the compiler output library/archive
> files directly with one procedure per object in the library. Our
> compilers have done this since 1987 and any linker appropriately does
> not link in unused code.
Using a smarter linker can do more than just eliminate dead code.
For instance, the Plan 9/Inferno C compilers emit "high level" machine
code which is translated as appropriate by the linker (e.g. the
emitted code can reference the "frame pointer" when none actually
exists - the linker statically keeps track of the stack pointer and
inserts the appropriate offsets)
The linker can then do all sorts of interesting things: automatically
inline small procedures, remove unreferenced global data and functions
(the former can be a big win on space), peephole and interprocedural
optimisation, etc.
Another example of the flexibility of this approach: we've got a
linker for the ARM that can generate ARM or Thumb code - the compiler
produces the same intermediate files for both.
cheers,
rog.
[I've always been surprised we don't see more link-time optimization,
since the linker is usually the only phase of the compilation process
that sees the entire program. -John]
Return to the
comp.compilers page.
Search the
comp.compilers archives again.