[commit: ghc] master: compiler: make sure we reject -O + HscInterpreted (9736c04)
git at git.haskell.org
git at git.haskell.org
Mon May 11 12:13:56 UTC 2015
Repository : ssh://git@git.haskell.org/ghc
On branch : master
Link : http://ghc.haskell.org/trac/ghc/changeset/9736c042f4292b4fb94ca9faca6a010372a0f92f/ghc
>---------------------------------------------------------------
commit 9736c042f4292b4fb94ca9faca6a010372a0f92f
Author: Austin Seipp <austin at well-typed.com>
Date: Mon May 11 07:10:22 2015 -0500
compiler: make sure we reject -O + HscInterpreted
When using GHCi, we explicitly reject optimization, because the
compilers optimization passes can introduce unboxed tuples, which the
interpreter is not able to handle. But this goes the other way too: using
GHCi on optimized code may cause the optimizer to float out breakpoints
that the interpreter introduces. This manifests itself in weird ways,
particularly if you as an API client use custom DynFlags to introduce
optimization in combination with HscInterpreted.
It turns out we weren't checking for consistent DynFlag settings when
doing `setSessionDynFlags`, as #10052 showed. While the main driver
handled it in `DynFlags` via `parseDynamicFlags`, we didn't check this
elsewhere.
This does a little refactoring to split out some of the common code, and
immunizes the various `DynFlags` utilities in the `GHC` module from this
particular bug. We should probably be checking other general invariants
too.
This fixes #10052, and adds some notes about the behavior in `GHC` and
`FloatOut`
As a bonus, expose `warningMsg` from `ErrUtils` as a helper since it
didn't exist (somehow).
Signed-off-by: Austin Seipp <austin at well-typed.com>
Reviewed By: edsko
Differential Revision: https://phabricator.haskell.org/D727
GHC Trac Issues: #10052
>---------------------------------------------------------------
9736c042f4292b4fb94ca9faca6a010372a0f92f
compiler/main/DynFlags.hs | 19 +++++-----
compiler/main/ErrUtils.hs | 6 +++-
compiler/main/GHC.hs | 41 ++++++++++++++++++----
compiler/simplCore/FloatOut.hs | 27 ++++++++++++++
testsuite/.gitignore | 1 +
testsuite/tests/ghc-api/T10052/Makefile | 12 +++++++
testsuite/tests/ghc-api/T10052/T10052-input.hs | 1 +
testsuite/tests/ghc-api/T10052/T10052.hs | 30 ++++++++++++++++
.../T10052/T10052.stderr} | 0
testsuite/tests/ghc-api/T10052/T10052.stdout | 1 +
testsuite/tests/ghc-api/T10052/all.T | 2 ++
11 files changed, 123 insertions(+), 17 deletions(-)
Diff suppressed because of size. To see it, use:
git diff-tree --root --patch-with-stat --no-color --find-copies-harder --ignore-space-at-eol --cc 9736c042f4292b4fb94ca9faca6a010372a0f92f
More information about the ghc-commits
mailing list