1. 02 Jun, 2017 1 commit
  2. 01 Jun, 2017 1 commit
  3. 31 May, 2017 1 commit
  4. 30 May, 2017 1 commit
    • niteria's avatar
      Efficient checks for stable modules · 8bfab438
      niteria authored
      With a large number of modules in a home package
      (in my case 5000) the costs of linear lookups becomes significant.
      This changes them to efficient IntMap lookups.
      
      It reduces the cost of `:reload` on unchanged source
      from 5.77s to 1.62s on my test case.
      
      I could go further and make `Linker.unload` also take a set,
      but I prefer to concentrate on one thing at a time.
      
      Test Plan: harbormaster
      
      Reviewers: simonmar, austin, bgamari
      
      Reviewed By: bgamari
      
      Subscribers: rwbarton, thomie
      
      Differential Revision: https://phabricator.haskell.org/D3611
      8bfab438
  5. 29 May, 2017 1 commit
  6. 28 May, 2017 1 commit
  7. 27 May, 2017 5 commits
  8. 26 May, 2017 8 commits
    • Ryan Scott's avatar
      Add regression test for #13758 · c8231408
      Ryan Scott authored
      c8231408
    • Ben Gamari's avatar
      Revert "Rewrite boot in Python" · 7fce4cbc
      Ben Gamari authored
      This reverts commit 0440af6a.
      Unfortunately this breaks on Windows for tiresome reasons. I'll need to
      reevaluate this.
      7fce4cbc
    • Gabor Greif's avatar
      Typos in comments [ci skip] · 19c4203f
      Gabor Greif authored
      19c4203f
    • Simon Peyton Jones's avatar
      Some tidying up of type pretty-printing · ad14efd5
      Simon Peyton Jones authored
      Triggered by the changes in #13677, I ended up doing a bit of
      refactoring in type pretty-printing.
      
      * We were using TyOpPrec and FunPrec rather inconsitently, so
        I made it consisent.
      
      * That exposed the fact that we were a bit undecided about whether
        to print
           a + b -> c + d   vs   (a+b) -> (c+d)
        and similarly
           a ~ [b] => blah  vs   (a ~ [b]) => blah
      
        I decided to make TyOpPrec and FunPrec compare equal
        (in BasicTypes), so (->) is treated as equal precedence with
        other type operators, so you get the unambiguous forms above,
        even though they have more parens.
      
        We could readily reverse this decision.
        See Note [Type operator precedence] in BasicTypes
      
      * I fixed a bug in pretty-printing of HsType where some
        parens were omitted by mistake.
      ad14efd5
    • Simon Peyton Jones's avatar
      Shrink a couple of hs-boot files · 226860e7
      Simon Peyton Jones authored
      IfaceType.hs-boot and ToIface.hs-boot were bigger than they
      needed to be, so I'm shrinking them.
      226860e7
    • Simon Peyton Jones's avatar
      Re-engineer Given flatten-skolems · 8dc6d645
      Simon Peyton Jones authored
      The big change here is to fix an outright bug in flattening of Givens,
      albeit one that is very hard to exhibit.  Suppose we have the constraint
          forall a. (a ~ F b) => ..., (forall c. ....(F b)...) ...
      
      Then
       - we'll flatten the (F) b to a fsk, say  (F b ~ fsk1)
       - we'll rewrite the (F b) inside the inner implication to 'fsk1'
       - when we leave the outer constraint we are suppose to unflatten;
         but that fsk1 will still be there
       - if we re-simplify the entire outer implication, we'll re-flatten
         the Given (F b) to, say, (F b ~ fsk2)
      Now we have two fsks standing for the same thing, and that is very
      wrong.
      
      Solution: make fsks behave more like fmvs:
       - A flatten-skolem is now a MetaTyVar, whose MetaInfo is FlatSkolTv
       - We "fill in" that meta-tyvar when leaving the implication
       - The old FlatSkol form of TcTyVarDetails is gone completely
       - We track the flatten-skolems for the current implication in
         a new field of InertSet, inert_fsks.
      
      See Note [The flattening story] in TcFlatten.
      
      In doing this I found various other things to fix:
      
      * I removed the zonkSimples from TcFlatten.unflattenWanteds; it wasn't
        needed.   But I added one in TcSimplify.floatEqualities, which does
        the zonk precisely when it is needed.
      
      * Trac #13674 showed up a case where we had
           - an insoluble Given,   e.g.  a ~ [a]
           - the same insoluble Wanted   a ~ [a]
        We don't use the Given to rewwrite the Wanted (obviously), but
        we therefore ended up reporting
            Can't deduce (a ~ [a]) from (a ~ [a])
        which is silly.
      
        Conclusion: when reporting errors, make the occurs check "win"
        See Note [Occurs check wins] in TcErrors
      8dc6d645
    • Simon Peyton Jones's avatar
      Make isInsolubleOccursCheck more aggressive · c2eea089
      Simon Peyton Jones authored
      Consider
        type family F a :: * -> *
      
      Then (a ~ F Int a) is an insoluble occurs check, and can be reported
      as such.  Previous to this patch, TcType.isInsolubleOccursCheck was
      treating any type-family application (including an over-saturated one)
      as unconditionally not-insoluble.
      
      This really only affects error messages, and then only slightly. I
      tripped over this when investigating  Trac #13674.
      c2eea089
    • Simon Peyton Jones's avatar
      A bit more tc-tracing · 17055da1
      Simon Peyton Jones authored
      17055da1
  9. 25 May, 2017 3 commits
    • Sergei Trofimovich's avatar
      rules: add per-library EXTRA_HC_OPTS · f011f587
      Sergei Trofimovich authored
      
      
      Sometimes it's handy to change a compiler flag
      for a library in stage{0,1,2}.
      
      Usage example:
      
          libraries/binary_EXTRA_HC_OPTS += -O1
          libraries/containers_EXTRA_HC_OPTS += -O1
          libraries/bytestring_EXTRA_HC_OPTS += -O1
      
      Here override default -O2 defined in .cabal files
      for these libraries to speed build up.
      Signed-off-by: default avatarSergei Trofimovich <slyfox@gentoo.org>
      f011f587
    • Simon Peyton Jones's avatar
      Pattern synonyms and higher rank types · c9977385
      Simon Peyton Jones authored
      This patch fixes two separate bugs which contributed to making
      Trac #13752 go wrong
      
      1.  We need to use tcSubType, not tcUnify,
          in tcCheckPatSynDecl.tc_arg.
      
          Reason: Note [Pattern synonyms and higher rank types]
      
      2.  TcUnify.tc_sub_type had a special case designed to improve error
          messages; see Note [Don't skolemise unnecessarily].  But the
          special case was too liberal, and ended up using unification
          (which led to rejecting the program) when it should instead taken
          the normal path (which accepts the program).
      
          I fixed this by making the test more conservative.
      c9977385
    • Simon Peyton Jones's avatar
      Comments only · 10131947
      Simon Peyton Jones authored
      10131947
  10. 23 May, 2017 6 commits
    • Gabor Greif's avatar
      Typos in comments and manual [ci skip] · 0b4b4a34
      Gabor Greif authored
      0b4b4a34
    • Ben Gamari's avatar
    • Ben Gamari's avatar
      base: Fix a few TODOs in Typeable.Internal · 6166b59f
      Ben Gamari authored
      Test Plan: Validate
      
      Reviewers: austin, hvr, dfeuer
      
      Reviewed By: dfeuer
      
      Subscribers: rwbarton, thomie
      
      GHC Trac Issues: #13746
      
      Differential Revision: https://phabricator.haskell.org/D3605
      6166b59f
    • Sergei Trofimovich's avatar
      ghc.mk: rename installed ghc-stage1 on non-windows · 10760105
      Sergei Trofimovich authored
      
      
      When user installs _native_ build ghc executable is renamed
      from '$(libexec)/bin/ghc-stage<N>' to '$(libexec)/bin/ghc'.
      But not on windows!
      
      In case of _cross-compiler_ rename should happen only
      for '$(libexec)/bin/ghc-stage<N>' runnable on non-windows
      platform.
      
      Before the change '$(libexec)/bin/ghc-stage<N>' rename happened
      for any compiler not targeting windows.
      
      After the patch rename also happens for '$(libexec)/bin/ghc-stage1'
      cross-compiler built for linux targeting windows (Stage1Only=YES case).
      
      Or on a concrete example:
      
         # host is x86_64-pc-linux-gnu
         $ ./configure --target=i686-w64-mingw32
         $ make install Stage1Only=YES
      
      Before the change the layout was:
         - '$(libexec)/bin/ghc-stage1' was installed
         - bin/ghc contained 'exec $(libexec)/bin/ghc' # missing file!
      After the change:
         - '$(libexec)/bin/ghc' was installed
         - bin/ghc contained 'exec $(libexec)/bin/ghc' # present file
      Signed-off-by: default avatarSergei Trofimovich <slyfox@gentoo.org>
      10760105
    • Sergei Trofimovich's avatar
      mk/config.mk.in: lower -O2 optimization down to -O1 on UNREG · 432a1f18
      Sergei Trofimovich authored
      It's not a new behaviour. First it was introduced by
      2d5372cf
      ("lower -O2 optimization down to -O1 on UNREG") to fix build
      failure on unregisterised powerpc64.
      
      This time I've noticed build failures on unregisterised ia64.
      
      The change was accidentally reverted by commit
      14d0f7f1
      
      
      ("Build system: Add stage specific SRC_HC_(WARNING_)OPTS)
      
      The revert happened due to the following code rearrangement:
      
          ifeq "$(GhcUnregisterised)" "YES"
          GhcStage1HcOpts=
          GhcStage2HcOpts=
          GhcStage3HcOpts=
          endif
      
          GhcUnregisterised=@Unregisterised@
      
      As a result 'ifeq' part has no effect.
      
      The change moves 'ifeq' down to the very end of file
      and adds a note it depends on the 'GhcUnregisterised' variable.
      Signed-off-by: default avatarSergei Trofimovich <slyfox@gentoo.org>
      432a1f18
    • Sergei Trofimovich's avatar
      aclocal.m4: allow override of dllwrap and windres when cross-compiling · 1fd06de4
      Sergei Trofimovich authored
      Commit 66108864
      
       reverted ability
      to override 'dllwrap' and 'windres' paths when cross-compiling.
      
      After this change (and a few libraries/Win32 patches) I was able
      to build cross-compiler to windows:
      
          $ ./configure --target=i686-w64-mingw32 \
              DllWrap=i686-w64-mingw32-dllwrap \
              Windres=i686-w64-mingw32-windres
      
      Later both 'dllwrap' and 'windres' should be derived from --target=
      as we do now for 'CC', 'AR', 'NM' and others.
      Signed-off-by: default avatarSergei Trofimovich <slyfox@gentoo.org>
      1fd06de4
  11. 22 May, 2017 9 commits
  12. 21 May, 2017 1 commit
  13. 20 May, 2017 2 commits