summary refs log tree commit diff
path: root/pkgs/development/haskell-modules
diff options
context:
space:
mode:
authorAlexander Biehl <alexbiehl@gmail.com>2018-08-27 15:50:37 +0200
committerPeter Simons <simons@cryp.to>2018-09-12 10:30:20 +0200
commit88ce4f5e8a2706c28bde0794932cba17cb816286 (patch)
tree9c65280144689e089caf58cba954f705dc67acf2 /pkgs/development/haskell-modules
parentf8a158c3466bb013e776e590871da9f1869667f7 (diff)
downloadnixlib-88ce4f5e8a2706c28bde0794932cba17cb816286.tar
nixlib-88ce4f5e8a2706c28bde0794932cba17cb816286.tar.gz
nixlib-88ce4f5e8a2706c28bde0794932cba17cb816286.tar.bz2
nixlib-88ce4f5e8a2706c28bde0794932cba17cb816286.tar.lz
nixlib-88ce4f5e8a2706c28bde0794932cba17cb816286.tar.xz
nixlib-88ce4f5e8a2706c28bde0794932cba17cb816286.tar.zst
nixlib-88ce4f5e8a2706c28bde0794932cba17cb816286.zip
More conservative SCC tagging for Haskell libraries
`all-functions` corresponds to `-fprof-auto` which places an SCC on every binding. It is well known that SCCs hinder GHC from doing its optimization magic and really slows down profiled code to a point where the profiling reports are completely skewed towards things that were completely optimized away in production settings. Concretely this shows up with things like lenses which do not carry runtime overhead when properly simplified.

`exported-functions` corresponds to GHCs `-fprof-auto-exported` which doesn't put SCCs on `INLINE`d code and in turn doesn't influence simplification of this basic but important stuff.
Diffstat (limited to 'pkgs/development/haskell-modules')
-rw-r--r--pkgs/development/haskell-modules/generic-builder.nix2
1 files changed, 1 insertions, 1 deletions
diff --git a/pkgs/development/haskell-modules/generic-builder.nix b/pkgs/development/haskell-modules/generic-builder.nix
index a0dd2a305f89..cdbf119af8c4 100644
--- a/pkgs/development/haskell-modules/generic-builder.nix
+++ b/pkgs/development/haskell-modules/generic-builder.nix
@@ -26,7 +26,7 @@ in
 , editedCabalFile ? null
 , enableLibraryProfiling ? true
 , enableExecutableProfiling ? false
-, profilingDetail ? "all-functions"
+, profilingDetail ? "exported-functions"
 # TODO enable shared libs for cross-compiling
 , enableSharedExecutables ? false
 , enableSharedLibraries ? (ghc.enableShared or false)