<div dir="ltr">Devs: as I'm sure you know, the hardest part of reporting a GHC bug is finding a minimal example that triggers the bug. When I initially trigger a bug in my large code base, my workflow is something like:<div><br></div><div> 1. write a driver that triggers the bug</div><div> 2. do manual dead code elimination by removing unused files and functions</div><div> 3. "human required" step to figure out what can be trimmed to further minimize</div><div> 4. go to step 2 until example is simple enouogh<br><div><br></div><div>Since I work on a large library (>60 modules) and also report a fair number of bugs, I spend a nontrivial amount of time on step 2, which is completely mechanical. It would be nice to have a tool that can help out. Specifically, something that takes a "driver" file, and produces a copy of the code contents to a new directory sans unimported files, and unused functions from imported files.</div></div><div><br></div><div>Ideally, this tool would make a "closed universe" assumption so that exported functions can also be eliminated as dead, if they are never used elsewhere. A bonus feature would be to remove unused imports, and even unused build-depends from the cabal file.</div><div><br></div><div>Are there any tools out there that can do any portion of this process for me? Perhaps it is possible to output contents after the compiler does a DCE pass?<br></div><div><br></div><div>Regards,</div><div>Eric Crockett</div><div><br></div></div>