
Hi Facundo
Currently there is no way to disable the simple optimiser, but it would be
easy to add a flag to do so.
I'm not sure if that is really what you want -- you'll be left with a
program with a lot of "junk" like (let x = y in ...). But maybe LH
doesn't mind the junk!
If you decide that is what you want, I'm sure we (or you) can add a flag to
control it. The relevant code is in GHC.HsToCore, below
Before you go much further, do open a ticket.
Simon
I think this the code you want to disable with a flag:
; let simpl_opts = initSimpleOpts dflags
; let (ds_binds, ds_rules_for_imps, occ_anald_binds)
= simpleOptPgm simpl_opts mod final_pgm rules_for_imps
-- The simpleOptPgm gets rid of type
-- bindings plus any stupid dead code
; putDumpFileMaybe logger Opt_D_dump_occur_anal "Occurrence
analysis"
FormatCore (pprCoreBindings occ_anald_binds $$ pprRules
ds_rules_for_imps )
; endPassHscEnvIO hsc_env name_ppr_ctx CoreDesugarOpt ds_binds
ds_rules_for_imps
On Fri, 26 Jan 2024 at 12:29, Facundo Domínguez
Dear devs,
I noticed that GHC sometimes inlines bindings during desugaring, e.g
foo = z where z = z1 + z2 z1 = 42 z2 = 1
is desugared to
foo = 42 + 1
This inlining is problematic when using a plugin like Liquid Haskell, which wants to analyse in Core the local bindings provided by the user.
Until ghc-9.6 LH didn't experience the inlining when using the GHC API. And this is despite the fact that using ghc from the command line would seem to always inline during desugaring, even when using -O0.
When using ghc-9.8.1 though, even the output of the GHC API started having the bindings inlined. Some debugging with -ddump-ds and -ddump-ds-preopt shows that inlining must be happening in the simple optimizer.
Is there anything one could do to disable the optimizations?
Thanks in advance, Facundo
-- All views and opinions expressed in this email message are the personal opinions of the author and do not represent those of the organization or its customers. _______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs