Performance of OccurAnal
Looking at a ticky report for GHC.Linker.Loader (randomly chosen module) sorted by Alloc we can see that OccurAnal appears quite often (6 entries in the first 50):
Entries Alloc Alloc'd Non-void Arguments STG Name
--------------------------------------------------------------------------------
332720 129773280 0 4 SMLL $woccAnalApp{v raHT} (GHC.Core.Opt.OccurAnal) (fun)
409881 99256848 0 2 SM $wtagLamBinder{v raFH} (GHC.Core.Opt.OccurAnal) (fun)
427004 61389072 0 2 MM setBinderOcc{v r3Xp} (GHC.Core.Opt.OccurAnal) (fun)
449986 52681200 0 2 SM GHC.Core.Opt.OccurAnal.$woccAnal{v raFs} (fun)
637430 45647640 0 3 SLL $woccAnalArgs{v raHU} (GHC.Core.Opt.OccurAnal) (fun)
27651 20549760 0 5 SESMS GHC.Core.Opt.OccurAnal.occAnalBind{v r3Wd} (fun)
79632 15289344 0 1 S sat_siqr{v} (GHC.Core.Opt.OccurAnal) (fun) in raFs
39098 11310728 0 3 SLM $woccAnalLamOrRhs{v raHS} (GHC.Core.Opt.OccurAnal) (fun)
353019 8472456 0 2 SM tagLamBinder{v r3Xm} (GHC.Core.Opt.OccurAnal) (fun)
24061 8454488 0 6 ESSSSM $wtagNonRecBinder{v raHb} (GHC.Core.Opt.OccurAnal) (fun)
79584 7003392 0 2 SL addInScope{v r3WK} (GHC.Core.Opt.OccurAnal) (fun)
329276 5289056 0 2 SM $wlookupBndrSwap{v raFF} (GHC.Core.Opt.OccurAnal) (fun)
162925 5187320 0 5 SSSiM GHC.Core.Opt.OccurAnal.$wdoZappingByUnique{v raEW} (fun)
4186 4008624 0 1 T sat_sj1o{v} (GHC.Core.Opt.OccurAnal) (fun) in r3Wf
24527 3923880 0 4 SEMM $woccAnalRhs{v raHQ} (GHC.Core.Opt.OccurAnal) (fun)
13440 2895048 0 2 SL $wgo4{v sj2p} (GHC.Core.Opt.OccurAnal) (fun) in raFt
7557 2474912 0 4 SETL $lgo6_gj3j{v} (GHC.Core.Opt.OccurAnal) (fun)
136494 1850592 0 1 L $wgo3{v raHK} (GHC.Core.Opt.OccurAnal) (fun)
We should investigate this.