Skip to content

Idea: Remove unused symbols in link-time for smaller binaries

This caught my attention recently: https://github.com/ocaml/ocaml/pull/608

I think GHC could also benefit from this. I'm currently looking at an

  1. 0,1-generated executable, generated with -O2. In the code I defined some

unused instances, just as an example, and I see code for those in text section in the binary. There is also lots of other unused stuff (I think mostly typeclass instances) imported from libraries and they're all unused because this is a "hello world" program that imports stuff and defines instances for no reason.

There should be another ticket around here that reports some numbers on how big GHC-generated executables (and GHC itself) is (when compared with other compilers)...

Trac metadata
Trac field Value
Version 8.1
Type FeatureRequest
TypeOfFailure OtherFailure
Priority lowest
Resolution Unresolved
Component Compiler
Test case
Differential revisions
BlockedBy
Related
Blocking
CC
Operating system
Architecture
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information