1. 07 Mar, 2015 9 commits
    • Austin Seipp's avatar
      build: fix 'make help' · e642de62
      Austin Seipp authored
      Summary:
      This fixes the usage of `make help` in the top-level and subdirectories.
      Signed-off-by: default avatarAustin Seipp <austin@well-typed.com>
      
      Test Plan: It worked now and didn't before.
      
      Reviewers: hvr
      
      Reviewed By: hvr
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D692
      e642de62
    • Peter Trommler's avatar
      Dynamically link all loaded packages in new object · 0fcc4543
      Peter Trommler authored
      Summary:
      As a result of fixing #8935 we needed to open shared libraries
      with RTLD_LOCAL and so symbols from packages loaded earlier
      cannot be found anymore. We need to include in the link all
      packages loaded so far.
      
      This fixes #10058
      
      Test Plan: validate
      
      Reviewers: hvr, simonmar, austin
      
      Reviewed By: austin
      
      Subscribers: rwbarton, thomie
      
      Differential Revision: https://phabricator.haskell.org/D676
      
      GHC Trac Issues: #10058
      0fcc4543
    • Alexander Vershilov's avatar
      Improve core linter so it catches unsafeCoerce problems (T9122) · 76b1e119
      Alexander Vershilov authored
      Summary:
      This is a draft of the patch that is sent for review.
      
      In this patch required changes in linter were introduced
      and actual check:
      
       - new helper function: primRepSizeB
       - primRep check for floating
       - Add access to dynamic flags in linter.
       - Implement additional lint rules.
      
      Reviewers: austin, goldfire, simonpj
      
      Reviewed By: simonpj
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D637
      
      GHC Trac Issues: #9122
      76b1e119
    • Rufflewind's avatar
      Don't assume tools are in same directory as ghc in some cases · 504d8a4b
      Rufflewind authored
      Summary: Tools such as `ghc-pkg` and `runghc` are no longer required to be in the same directory as `ghc` when running tests, provided that `TEST_HC` is not explicitly set and an in-tree compiler is not used.  Fixes #10126.
      
      Reviewers: thomie, austin
      
      Reviewed By: thomie, austin
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D705
      
      GHC Trac Issues: #10126
      504d8a4b
    • Austin Seipp's avatar
      Add missed test (uuugh) · 34ba68c2
      Austin Seipp authored
      Signed-off-by: default avatarAustin Seipp <austin@well-typed.com>
      34ba68c2
    • Iavor S. Diatchki's avatar
      Custom `Typeable` solver, that keeps track of kinds. · b359c886
      Iavor S. Diatchki authored
      Summary:
      This implements the new `Typeable` solver: when GHC sees `Typeable` constraints
      it solves them on the spot.
      
      The current implementation creates `TyCon` representations on the spot.
      
      Pro: No overhead at all in code that does not use `Typeable`
      Cons: Code that uses `Typeable` may create multipe `TyCon` represntations.
      
      We have discussed an implementation where representations of `TyCons` are
      computed once, in the module, where a datatype is declared.  This would
      lead to more code being generated:  for a promotable datatype we need to
      generate `2 + number_of_data_cons` type-constructro representations,
      and we have to do that for all programs, even ones that do not intend to
      use typeable.
      
      I added code to emit warning whenevar `deriving Typeable` is encountered---
      the idea being that this is not needed anymore, and shold be fixed.
      
      Also, we allow `instance Typeable T` in .hs-boot files, but they result
      in a warning, and are ignored.  This last one was to avoid breaking exisitng
      code, and should become an error, eventually.
      
      Test Plan:
      1. GHC can compile itself.
      2. I compiled a number of large libraries, including `lens`.
          - I had to make some small changes:
            `unordered-containers` uses internals of `TypeReps`, so I had to do a 1 line fix
          - `lens` needed one instance changed, due to a poly-kinded `Typeble` instance
      
      3. I also run some code that uses `syb` to traverse a largish datastrucutre.
      I didn't notice any signifiant performance difference between the 7.8.3 version,
      and this implementation.
      
      Reviewers: simonpj, simonmar, austin, hvr
      
      Reviewed By: austin, hvr
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D652
      
      GHC Trac Issues: #9858
      b359c886
    • Herbert Valerio Riedel's avatar
      Re-export `<$` from Prelude (#10113) · 479523f3
      Herbert Valerio Riedel authored
      This is a follow-up to eb3661f2
      re-exporting `<$` from `Prelude` as well.
      
      Reviewed By: austin, ekmett
      
      Differential Revision: https://phabricator.haskell.org/D681
      479523f3
    • Herbert Valerio Riedel's avatar
      Re-export `<$>` from Prelude (#10113) · eb3661f2
      Herbert Valerio Riedel authored
      Whether to re-export the `<$>` non-method operator from `Prelude` wasn't
      explicitly covered in the original AMP proposal[1], but it turns out that
      not doing so forces most code that makes use of applicatives to import
      `Data.Functor` or `Control.Applicative` just to get that operator into
      scope.  To this end, it was proposed to add `<$>` to Prelude as well[2].
      
      The down-side is that this increases the amount of redundant-import
      warnings triggered, as well as the relatively minor issue of stealing
      the `<$>` operator from the default namespace for good (although at this
      point `<$>` is supposed to be ubiquitous anyway due to `Applicative`
      being implicitly required into the next Haskell Report)
      
       [1]: https://wiki.haskell.org/Functor-Applicative-Monad_Proposal
       [2]: http://thread.gmane.org/gmane.comp.lang.haskell.libraries/24161
      
      Reviewed By: austin, ekmett
      
      Differential Revision: https://phabricator.haskell.org/D680
      eb3661f2
    • Herbert Valerio Riedel's avatar
      Drop redundant LANGUAGE pragmas · 1965202f
      Herbert Valerio Riedel authored
      Due to refactoring & cleanups those pragmas have become redundant by now
      1965202f
  2. 06 Mar, 2015 4 commits
  3. 05 Mar, 2015 3 commits
  4. 04 Mar, 2015 9 commits
    • thomie's avatar
      Remove unused/undocumented flag `-fhpc-no-auto` · 8a5d3205
      thomie authored
      Added in 53a5d0b0. Perhaps accidentally? It didn't do anything back then
      either.
      
      Reviewed By: austin
      
      Differential Revision: https://phabricator.haskell.org/D700
      8a5d3205
    • Joachim Breitner's avatar
      e73c0dea
    • Simon Peyton Jones's avatar
    • Simon Peyton Jones's avatar
      Check for equality before deferring · 3aa2519e
      Simon Peyton Jones authored
      This one was a bit of a surprise. In fixing Trac #7854, I moved
      the checkAmbiguity tests to checkValidType. That meant it happened
      even for monotypes, and that turned out to be very expensive in
      T9872a, for reasons described in this (new) Note in TcUnify:
      
          Note [Check for equality before deferring]
          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
          Particularly in ambiguity checks we can get equalities like (ty ~ ty).
          If ty involves a type function we may defer, which isn't very sensible.
          An egregious example of this was in test T9872a, which has a type signature
                 Proxy :: Proxy (Solutions Cubes)
          Doing the ambiguity check on this signature generates the equality
             Solutions Cubes ~ Solutions Cubes
          and currently the constraint solver normalises both sides at vast cost.
          This little short-cut in 'defer' helps quite a bit.
      
      I fixed the problem with a quick equality test, but it feels like an ad-hoc
      solution; I think we might want to do something in the constraint solver too.
      
      (The problem was there all along, just more hidden.)
      3aa2519e
    • Simon Peyton Jones's avatar
      Comments only · ef2c7a73
      Simon Peyton Jones authored
      ef2c7a73
    • Simon Peyton Jones's avatar
      A raft of small changes associated with -XConstrainedClassMethods · f66e0e69
      Simon Peyton Jones authored
      See Trac #7854.  Specifically:
      
      * Major clean up and simplification of check_op in checkValidClass;
        specifically
           - use checkValidType on the entire method-selector type to detect
             ambiguity
           - put a specific test for -XConstrainedClassMethods
      
      * Make -XConstrainedClassMethods be implied by -XMultiParamTypeClasses
        (a bit ad-hoc but see #7854), and document in the user manual.
      
      * Do the checkAmbiguity test just once in TcValidity.checkValidType,
        rather than repeatedly at every level. See Note [When to call checkAmbiguity]
      
      * Add -XAllowAmbiguousTypes in GHC.IP, since 'ip' really is ambiguous.
        (It's a rather magic function.)
      
      * Improve location info for check_op in checkValidClass
      
      * Update quite a few tests, which had genuinely-ambiguous class
        method signatures.  Some I fixed by making them unambiguous; some
        by adding -XAllowAmbiguousTypes
      f66e0e69
    • Simon Peyton Jones's avatar
      Some minor refactoring in TcHsType · d058bc9c
      Simon Peyton Jones authored
      d058bc9c
    • Simon Peyton Jones's avatar
      Tidy up and improve comments about one-shot info · ee56dc56
      Simon Peyton Jones authored
      (Triggered by investigating Trac #10102 etc.)
      ee56dc56
    • Tamar Christina's avatar
      Fix -Werror build failure in RtsMain · e673b840
      Tamar Christina authored
      Summary:
      Something in Excn.h's include chain is loading _mingw.h which is defining a macro that
      PosixSource.h is going to define.
      
      _mingw.h's version properly checks if it has already been defined and skips it, so fixing the warning can be done
      by just including Excn.h later (moved it to before last include).
      
      Test Plan: ./validate
      
      Reviewers: austin
      
      Reviewed By: austin
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D698
      e673b840
  5. 03 Mar, 2015 5 commits
    • Edward Z. Yang's avatar
      6e77d45b
    • eir@cis.upenn.edu's avatar
      Don't use deriveUnique *twice* in flattenTys. · a0cea7ba
      eir@cis.upenn.edu authored
      Previously, we used deriveUnique and then uniqAway. This worked
      doubly hard to avoid clashes. Doing just uniqAway is enough.
      
      This commit also includes clarifying comments.
      a0cea7ba
    • Oleg Grenrus's avatar
      Add various instances to newtypes in Data.Monoid · 4e6bcc2c
      Oleg Grenrus authored
      Summary:
      Add Functor instances for Dual, Sum and Product
      Add Foldable instances for Dual, Sum and Product
      Add Traversable instances for Dual, Sum and Product
      Add Foldable and Traversable instances for First and Last
      Add Applicative, Monad instances to Dual, Sum, Product
      Add MonadFix to Data.Monoid wrappers
      Derive Data for Identity
      Add Data instances to Data.Monoid wrappers
      Add Data (Alt f a) instance
      
      Reviewers: ekmett, dfeuer, hvr, austin
      
      Reviewed By: dfeuer, austin
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D673
      
      GHC Trac Issues: #10107
      4e6bcc2c
    • thomie's avatar
      Pretty-print # on unboxed literals in core · 89458eba
      thomie authored
      Summary:
      Ticket #10104 dealt with showing the '#'s on types with unboxed fields. This
      commit pretty prints the '#'s on unboxed literals in core output.
      
      Test Plan: simplCore/should_compile/T8274
      
      Reviewers: jstolarek, simonpj, austin
      
      Reviewed By: simonpj, austin
      
      Subscribers: simonpj, thomie
      
      Differential Revision: https://phabricator.haskell.org/D678
      
      GHC Trac Issues: #8274
      89458eba
    • Tamar Christina's avatar
      Replaced SEH handles with VEH handlers which should work uniformly across x86 and x64 · 5200bdeb
      Tamar Christina authored
      Summary:
      On Windows, the default action for things like division by zero and
      segfaults is to pop up a Dr. Watson error reporting dialog if the exception
      is unhandled by the user code.
      
      This is a pain when we are SSHed into a Windows machine, or when we
      want to debug a problem with gdb (gdb will get a first and second chance to
      handle the exception, but if it doesn't the pop-up will show).
      
      veh_excn provides two macros, `BEGIN_CATCH` and `END_CATCH`, which
      will catch such exceptions in the entire process and die by
      printing a message and calling `stg_exit(1)`.
      
      Previously this code was handled using SEH (Structured Exception Handlers)
      however each compiler and platform have different ways of dealing with SEH.
      
      `MSVC` compilers have the keywords `__try`, `__catch` and `__except` to have the
      compiler generate the appropriate SEH handler code for you.
      
      `MinGW` compilers have no such keywords and require you to manually set the
      SEH Handlers, however because SEH is implemented differently in x86 and x64
      the methods to use them in GCC differs.
      
      `x86`: SEH is based on the stack, the SEH handlers are available at `FS[0]`.
           On startup one would only need to add a new handler there. This has
           a number of issues such as hard to share handlers and it can be exploited.
      
      `x64`: In order to fix the issues with the way SEH worked in x86, on x64 SEH handlers
           are statically compiled and added to the .pdata section by the compiler.
           Instead of being thread global they can now be Image global since you have to
           specify the `RVA` of the region of code that the handlers govern.
      
      You can on x64 Dynamically allocate SEH handlers, but it seems that (based on
      experimentation and it's very under-documented) that the dynamic calls cannot override
      static SEH handlers in the .pdata section.
      
      Because of this and because GHC no longer needs to support < windows XP, the better
      alternative for handling errors would be using the in XP introduced VEH.
      
      The bonus is because VEH (Vectored Exception Handler) are a runtime construct the API
      is the same for both x86 and x64 (note that the Context object does contain CPU specific
      structures) and the calls are the same cross compilers. Which means this file can be
      simplified quite a bit.
      Using VEH also means we don't have to worry about the dynamic code generated by GHCi.
      
      Test Plan:
      Prior to this diff the tests for `derefnull` and `divbyzero` seem to have been disabled for windows.
      To reproduce the issue on x64:
      1) open ghci
      2) import GHC.Base
      3) run: 1 `divInt` 0
      
      which should lead to ghci crashing an a watson error box displaying.
      
      After applying the patch, run:
      
      make TEST="derefnull divbyzero"
      
      on both x64 and x86 builds of ghc to verify fix.
      
      Reviewers: simonmar, austin
      
      Reviewed By: austin
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D691
      
      GHC Trac Issues: #6079
      5200bdeb
  6. 02 Mar, 2015 10 commits