summaryrefslogtreecommitdiff
path: root/compiler
diff options
context:
space:
mode:
authorKrzysztof Gogolewski <krzysztof.gogolewski@tweag.io>2023-04-21 11:37:42 +0200
committerMarge Bot <ben+marge-bot@smart-cactus.org>2023-05-12 06:11:38 -0400
commitab63daac0e0ed8749514e38d714cfcd4562f4326 (patch)
treea8914398a67f2be5a8025a3949fee98ed0e5685c /compiler
parentc176ad1835ccfe55e2bde875b4a35e9d226ff657 (diff)
downloadhaskell-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.hs1
-rw-r--r--compiler/GHC/Driver/Session.hs5
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 " ++