[commit: ghc] ghc-8.0: Remove -Wtoo-many-guards from default flags (fixes #11316) (5716c0d)

git at git.haskell.org git at git.haskell.org
Fri Jan 8 11:24:51 UTC 2016


Repository : ssh://git@git.haskell.org/ghc

On branch  : ghc-8.0
Link       : http://ghc.haskell.org/trac/ghc/changeset/5716c0d62cb4be00767be63f0e54bc9f02299884/ghc

>---------------------------------------------------------------

commit 5716c0d62cb4be00767be63f0e54bc9f02299884
Author: George Karachalias <george.karachalias at gmail.com>
Date:   Tue Jan 5 15:59:49 2016 +0100

    Remove -Wtoo-many-guards from default flags (fixes #11316)
    
    Since #11316 indicates that having flag `-Wtoo-many-guards`
    enabled by default causes issues, the simplest thing is to
    remove it. This patch removes it from the default list, it
    updates the docs and removes the suppression flags for
    `T783` and `types/OptCoercion.hs`
    
    Test Plan: validate
    
    Reviewers: bgamari, austin, goldfire
    
    Subscribers: thomie
    
    Differential Revision: https://phabricator.haskell.org/D1737
    
    GHC Trac Issues: #11316
    
    (cherry picked from commit 77494fa9fa34c1a831caabc194e855167de0c2d9)


>---------------------------------------------------------------

5716c0d62cb4be00767be63f0e54bc9f02299884
 compiler/main/DynFlags.hs             |  1 -
 compiler/types/OptCoercion.hs         |  6 +-----
 docs/users_guide/8.0.1-notes.rst      |  3 +--
 docs/users_guide/using-warnings.rst   | 11 ++++++-----
 testsuite/tests/perf/compiler/T783.hs |  5 -----
 5 files changed, 8 insertions(+), 18 deletions(-)

diff --git a/compiler/main/DynFlags.hs b/compiler/main/DynFlags.hs
index 213c946..54b7b01 100644
--- a/compiler/main/DynFlags.hs
+++ b/compiler/main/DynFlags.hs
@@ -3413,7 +3413,6 @@ optLevelFlags -- see Note [Documenting optimisation flags]
 standardWarnings :: [WarningFlag]
 standardWarnings -- see Note [Documenting warning flags]
     = [ Opt_WarnOverlappingPatterns,
-        Opt_WarnTooManyGuards,
         Opt_WarnWarningsDeprecations,
         Opt_WarnDeprecatedFlags,
         Opt_WarnDeferredTypeErrors,
diff --git a/compiler/types/OptCoercion.hs b/compiler/types/OptCoercion.hs
index 41cec21..1038851 100644
--- a/compiler/types/OptCoercion.hs
+++ b/compiler/types/OptCoercion.hs
@@ -1,14 +1,10 @@
 -- (c) The University of Glasgow 2006
 
 {-# LANGUAGE CPP #-}
-#if __GLASGOW_HASKELL__ > 710
-{-# OPTIONS_GHC -Wno-too-many-guards #-}
-#endif
  -- This module used to take 10GB of memory to compile with the new
  -- (Nov '15) pattern-match check. In order to be able to compile it,
  -- do not enable -ffull-guard-reasoning. Instead, simplify the guards
- -- (default behaviour when guards are too many) but suppress the
- -- "too-many-guards" warning (-Werror is on).
+ -- (default behaviour when guards are too many).
 
 module OptCoercion ( optCoercion, checkAxInstCo ) where
 
diff --git a/docs/users_guide/8.0.1-notes.rst b/docs/users_guide/8.0.1-notes.rst
index 5938ffd..a3b114e 100644
--- a/docs/users_guide/8.0.1-notes.rst
+++ b/docs/users_guide/8.0.1-notes.rst
@@ -249,8 +249,7 @@ Compiler
 
 -  Added the ``-Wtoo-many-guards`` flag. When enabled, this will issue a
    warning if a pattern match contains too many guards (over 20 at the
-   moment). It is enabled by default but makes a difference only if pattern
-   match checking is also enabled.
+   moment). Makes a difference only if pattern match checking is also enabled.
 
 -  Added the ``-ffull-guard-reasoning`` flag. When enabled, pattern match
    checking tries its best to reason about guards. Since the additional
diff --git a/docs/users_guide/using-warnings.rst b/docs/users_guide/using-warnings.rst
index 619f701..bc12688 100644
--- a/docs/users_guide/using-warnings.rst
+++ b/docs/users_guide/using-warnings.rst
@@ -545,14 +545,15 @@ of ``-W(no-)*``.
 
     The option ``-Wtoo-many-guards`` warns about places where a
     pattern match contains too many guards (over 20 at the moment).
-    It is enabled by default but has an effect only if any form of
-    exhaustivness/overlapping checking is enabled (one of
+    It has an effect only if any form of exhaustivness/overlapping
+    checking is enabled (one of
     ``-Wincomplete-patterns``,
     ``-Wincomplete-uni-patterns``,
     ``-Wincomplete-record-updates``,
-    ``-Woverlapping-patterns``). The warning can be suppressed by
-    enabling either ``-Wno-too-many-guards``, which just hides the
-    warning, or ``-ffull-guard-reasoning``.
+    ``-Woverlapping-patterns``). When enabled, the warning can be
+    suppressed by enabling either ``-Wno-too-many-guards``, which just
+    hides the warning, or ``-ffull-guard-reasoning`` which runs the
+    full check, independently of the number of guards.
 
 ``-ffull-guard-reasoning``
     .. index::
diff --git a/testsuite/tests/perf/compiler/T783.hs b/testsuite/tests/perf/compiler/T783.hs
index cfd6b62..c3ea08d 100644
--- a/testsuite/tests/perf/compiler/T783.hs
+++ b/testsuite/tests/perf/compiler/T783.hs
@@ -1,8 +1,3 @@
-{-# LANGUAGE CPP #-}
-#if __GLASGOW_HASKELL__ > 710
-{-# OPTIONS_GHC -Wno-too-many-guards #-}
-#endif
-
 module Test where
 
 foo :: Double -> Int



More information about the ghc-commits mailing list