4 ms·
In the early aughts I was kicking around an idea for minimization of binaries/libraries. The idea was to take a compiled binary plus debug information, and use
by jacinabox 7y ago
In the early aughts I was kicking around an idea for minimization of binaries/libraries. The idea was to take a compiled binary plus debug information, and use disassembly to work out which code paths are reachable from a selected set of entry points (say the ones used by your application). Then code paths which are considered "dead" would be zeroed out, preparing a minimized binary.
- ronsor 7y agosolution: run the application and find out what functions are/are not called.
- mrec 7y agoThat only tells you what functions got called on that run, for that run's sequence of inputs. https://fgiesen.wordpress.com/2012/04/08/metaprogramming-for-madmen/ https://fgiesen.wordpress.com/2012/04/08/metaprogramming-for... Taster: > In the menu at the start, cursor-down works, but cursor-up doesn’t (he never hit cursor-up in menus during the test run). The small enemies at the start can hit you, but he didn’t get hit by any enemy shots, so in the released version of .kkrieger enemy shots deal no damage.
- thefreeman 7y agoDon't most compilers already do this?
- acqq 7y agoSpeaking about C and C++ on Linux, I have an impression that the compilers seldom can decide that the whole functions aren't used, especially because most libraries and programs "export" "everything" by default, so only on run-time it can be decided what will be actually used -- the last linking step happens only when you start the program, by the loader.
- saagarjha 7y agoYeah, isn't this just link-time optimization?
- throwaway542134 7y agoIt's called dead code elimination/optimization and compilers can do it without LTO, with LTO you can can get more savings but ymmv.
- saagarjha 7y agoThe original comment pointed out "entry points", so I assumed that they were talking about libraries rather than standard dead code elimination (which has been a thing for quite some time).