Opened 3 years ago

Last modified 3 years ago

#12244 new feature request

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

Reported by: osa1 Owned by:
Priority: lowest Milestone:
Component: Compiler Version: 8.1
Keywords: Cc:
Operating System: Unknown/Multiple Architecture: Unknown/Multiple
Type of failure: None/Unknown Test Case:
Blocked By: Blocking:
Related Tickets: Differential Rev(s):
Wiki Page:

Description

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 8.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)...

Change History (1)

comment:1 Changed 3 years ago by rwbarton

-split-objs and -split-sections already pretty much achieve this I think. Do you have a specific example where code built with -split-sections ends up with unused code in the final product?

Note: See TracTickets for help on using tickets.