diff options
author | Krzysztof Gogolewski <krzysztof.gogolewski@tweag.io> | 2023-04-21 11:37:42 +0200 |
---|---|---|
committer | Marge Bot <ben+marge-bot@smart-cactus.org> | 2023-05-12 06:11:38 -0400 |
commit | ab63daac0e0ed8749514e38d714cfcd4562f4326 (patch) | |
tree | a8914398a67f2be5a8025a3949fee98ed0e5685c /compiler | |
parent | c176ad1835ccfe55e2bde875b4a35e9d226ff657 (diff) | |
download | haskell-ab63daac0e0ed8749514e38d714cfcd4562f4326.tar.gz |
Allow Core optimizations when interpreting bytecode
Tracking ticket: #23056
MR: !10399
This adds the flag `-funoptimized-core-for-interpreter`, permitting use
of the `-O` flag to enable optimizations when compiling with the
interpreter backend, like in ghci.
Diffstat (limited to 'compiler')
-rw-r--r-- | compiler/GHC/Driver/Flags.hs | 1 | ||||
-rw-r--r-- | compiler/GHC/Driver/Session.hs | 5 |
2 files changed, 5 insertions, 1 deletions
diff --git a/compiler/GHC/Driver/Flags.hs b/compiler/GHC/Driver/Flags.hs index 3496b2af5a..2099d7c100 100644 --- a/compiler/GHC/Driver/Flags.hs +++ b/compiler/GHC/Driver/Flags.hs @@ -387,6 +387,7 @@ data GeneralFlag | Opt_KeepGoing | Opt_ByteCode | Opt_ByteCodeAndObjectCode + | Opt_UnoptimizedCoreForInterpreter | Opt_LinkRts -- output style opts diff --git a/compiler/GHC/Driver/Session.hs b/compiler/GHC/Driver/Session.hs index 52361abb09..84962f7868 100644 --- a/compiler/GHC/Driver/Session.hs +++ b/compiler/GHC/Driver/Session.hs @@ -3573,6 +3573,7 @@ fFlagsDeps = [ flagSpec "write-ide-info" Opt_WriteHie, flagSpec "unbox-small-strict-fields" Opt_UnboxSmallStrictFields, flagSpec "unbox-strict-fields" Opt_UnboxStrictFields, + flagSpec "unoptimized-core-for-interpreter" Opt_UnoptimizedCoreForInterpreter, flagSpec "version-macros" Opt_VersionMacros, flagSpec "worker-wrapper" Opt_WorkerWrapper, flagSpec "worker-wrapper-cbv" Opt_WorkerWrapperUnlift, -- See Note [Worker/wrapper for strict arguments] @@ -3896,7 +3897,8 @@ defaultFlags settings Opt_DumpWithWays, Opt_CompactUnwind, Opt_ShowErrorContext, - Opt_SuppressStgReps + Opt_SuppressStgReps, + Opt_UnoptimizedCoreForInterpreter ] ++ [f | (ns,f) <- optLevelFlags, 0 `elem` ns] @@ -4976,6 +4978,7 @@ makeDynFlagsConsistent dflags "Enabling -fPIC as it is always on for this platform" | backendForcesOptimization0 (backend dflags) + , gopt Opt_UnoptimizedCoreForInterpreter dflags , let (dflags', changed) = updOptLevelChanged 0 dflags , changed = loop dflags' ("Optimization flags are incompatible with the " ++ |