1. 15 Aug, 2015 3 commits
  2. 13 Aug, 2015 2 commits
  3. 12 Aug, 2015 10 commits
    • Ben Gamari's avatar
      SysTools: Fix whitespace in error message · 8c5b087b
      Ben Gamari authored
      8c5b087b
    • Ben Gamari's avatar
      Update mingw tarball location · e415369e
      Ben Gamari authored
      e415369e
    • Tamar Christina's avatar
      Upgrade GCC to 5.2.0 for Windows x86 and x86_64 · 7b211b4e
      Tamar Christina authored
      This patch does a few things
      
      - Moved GHC x86 to MinGW-w64 (Using Awson's patch)
      - Moves Both GHCs to MSYS2 toolchains
      - Completely removes the dependencies on the git tarball repo
        - Downloads only the required tarball for the architecture for
          which we are building
        - Downloads the perl tarball is missing as well
        - Fixed a few bugs in the linker to fix tests on Windows
      
      The links currently point to repo.msys2.org and GitHub, it might be
      more desirable to mirror them on
      http://downloads.haskell.org/~ghc/mingw/ as with the previous patch
      attempt.
      
      For more details on what the MSYS2 packages I include see #10726
      (Awson's comment). but it should contain all we need
      and no python or fortran, which makes the uncompressed tar a 1-2
      hundreds mb smaller.
      
      The `GCC 5.2.0` in the package supports `libgcc` as a shared library,
      this is a problem since
      when compiling with -shared the produced dll now has a dependency on
      `libgcc_s_sjlj-1.dll`.
      To solve this the flag `-static-libgcc` is now being used for all GCC
      calls on windows.
      
      Test Plan:
      ./validate was ran both on x86 and x86_64 windows and compared against
      the baseline.
      
      A few test were failing due to Ld no longer being noisy. These were
      updated.
      
      The changes to the configure script *should* be validated by the build
      bots for the other platforms before landing
      
      Reviewers: simonmar, awson, bgamari, austin, thomie
      
      Reviewed By: thomie
      
      Subscribers: #ghc_windows_task_force, thomie, awson
      
      Differential Revision: https://phabricator.haskell.org/D1123
      
      GHC Trac Issues: #10726, #9014, #9218, #10435
      7b211b4e
    • Ben Gamari's avatar
    • thomie's avatar
      Pretty: improving the space/time performance of vcat, hsep, hcat (#10735) · f903949b
      thomie authored
      After 5d57087e ("Pretty: fix a broken
      invariant"), T3294 showed 50% more max_bytes_used (#3294). After this
      commit, max_bytes_used is back to what it was before, and the test
      passes again.
      
      This is a backport of a bug fix by Benedikt Huber (#2393), from commit
      1e50748beaa4bd2281d323b18ea51c786bba04a1 in the pretty library.
      
      From https://mail.haskell.org/pipermail/libraries/2008-June/009991.html:
      
          vcat (hsep,cat) is implemented in an unneccessarily strict way.
          We only get some output after all of vcat's arguments are evaluated
          and checked against being Empty.
          This can be improved by only checking the right argument of foldr
          against being Empty, and
          then applying an Empty-filter on the resulting Doc. Space improvement
          is obvious.
          The microbenchmark (code.haskell.org/~bhuber/Text/PrettyPrint/
          HughesPJPerfCheck.hs) suggests that
          the improvements in time are remarkable too.
      f903949b
    • thomie's avatar
      Pretty: show rational as is (#10735) · 85bf76a8
      thomie authored
      Following libraries/pretty. I'm not sure why it converted to Double
      before.
      
      This function isn't used by GHC itself. It is exported from these two
      places:
        * compiler/utils/Outputable
        * libraries/template-haskell/Language/Haskell/TH/PprLib.hs
      85bf76a8
    • thomie's avatar
      Pretty: fix a broken invariant (#10735) · 5d57087e
      thomie authored
      This is a backport of a bug fix from
      6cfbd0444981c074bae10a3cf72733bcb8597bef in libraries/pretty:
      
          Fix a broken invariant
          Patch from #694,  for the problem "empty is an identity for <> and $$" is
          currently broken by eg. isEmpty (empty<>empty)"
      5d57087e
    • thomie's avatar
      Pretty: fix potential bad formatting of error message (#10735) · bcfae08c
      thomie authored
      This is a backport of a bug fix by Benedikt Huber for the same problem
      in the pretty library (#1337), from commit
      8d8866a8379c2fe8108ef034893c59e06d5e752f. The original explanation for
      the fix is attached below.
      
      Ticket #1776 originally reported an infinite loop when printing error
      message. This promptly got fixed in:
      
        commit 2d52ee06
        Author: simonpj@microsoft.com <unknown>
        Date:   Thu Mar 1 11:45:13 2007 +0000
      
            Do not go into an infinite loop when pretty-printer finds a
            negative indent (Trac #1176)
      
      SPJ reports in the ticket: "So infinite loop is fixed, but the bad
      formatting remains. I've added a test, tcfail177."
      
      tcfail177 however hasn't triggered the formatting problem for years (as
      Ian reported in c9e0e606).
      
      This patch updates the test to a version that at least still failed with
      ghc-7.0 (from #1776#comment:7).
      
      -------------------
      
      From https://mail.haskell.org/pipermail/libraries/2008-June/010013.html,
      by Benedikt Huber:
      
          Concerning ticket #1337, we have to change the formal specification of
          fill (it doesn't match the implementation):
      
          -- Current Specification:
          --   fill []  = empty
          --   fill [p] = p
          --   fill (p1:p2:ps) = oneLiner p1 <#> nest (length p1)
          --                                          (fill (oneLiner p2 : ps))
          --                     `union`
          --                      p1 $$ fill ps
      
          Problem 1: We want to `unnest' the second argument of (p1 $$ fill ps),
          but not the first one
      
          In the definition above we have e.g.
      
          > getSecondLayout $
          >   fillDef False [text "a", text "b", text "a"]
      
          >> text "ab"; nilabove; nest -1; text "a"; empty
          >> |ab|
          >> |.a|
      
          Problem 2: The overlapping $$ should only be used for those layouts of
          p1 which aren't one liners (otherwise violating the invariant "Left
          union arg has shorter first line").
      
          I suggest the following specification (i believe it almost matches the
          current implementation, modulo [fillNB: fix bug #1337] (see below):
      
          -- Revised Specification:
          --   fill g docs = fill' 0 docs
          --   gap g       = if g then 1 else 0
          --   fill' n []  = []
          --   fill' n [p] = [p]
          --   fill' n (p1:p2:ps) =
          --      oneLiner p1 <g> (fill' (n+length p1+gap g) (oneLiner p2 : ps))
          --        `union`
          --     (p1 $*$ nest (-n) (fill' g ps))
          --
          -- $*$ is defined for layouts (One-Layout Documents) as
          --
          -- layout1 $*$ layout2 | isOneLiner layout1 = layout1 $+$ layout2
          --                     | otherwise          = layout1 $$ layout2
      
          I've also implemented the specification in HughesPJQuickCheck.hs,
          and checked them against the patched pretty printer.
      
          Concerning Bug #1337:
          ~~~~~~~~~~~~~~~~~~~~~
      
          If the above formal specification is fine, it is easy to fix:
          elide the nests of (oneLiner p2) [see attached patch, record bug #1337].
      
          > PrettyPrint(0) $ ./Bug1337
          > ....ab
          > ...c
      
          The (long) explanation follows below.
      
          <snip/>
      
          ===========================================================
          Explanation of Bug #1337:
      
          Consider
      
          > fcat [ nest 1 $ text "a", nest 2 $ text "b", text "c"]
      
          --> expected: (nest 1; text "a"; text "b"; nest -3; "c")
          --> actual  : (nest 1; text "a"; text "b"; nest -5; "c")
      
          Reduction:
          === (nest 1; text a) <> (fill (-2) (p2:ps))
          ==>                     (nest 2 (text "b") $+$ text "c")
          ==>                     (nest 2 (text "b")) `nilabove`
                                  (nest (-3) (text "c"))
          ==> (nest 1; text a; text b; nest -5 c)
      
          The problem is that if we decide to layout (p1:p2:ps) as
      
          | p1 p2
          | ps
      
          (call it layout A), then we want to have
      
          > (p1 <> p2) $+$ ps.
      
          But following law <n6> this means that
      
          > fcat_A [p1:nest k p2:ps]
      
          is equivalent to
      
          > fcat_A [p1,p2,ps]
      
          so the nest of p2 has to be removed.
      
          This is somewhat similar to bug #667, but easier to fix
          from a semantic point of view:
          p1,p2 and ps are distinct layouts - we only have to preserve the
          individual layouts, and no combinations of them.
      bcfae08c
    • thomie's avatar
      Pretty: bugfix fillNB (#10735) · 67576ddc
      thomie authored
      This is a backport of a bug fix by Benedikt Huber (#2393), from commit
      1e50748beaa4bd2281d323b18ea51c786bba04a1 in the pretty library.
      
      From https://mail.haskell.org/pipermail/libraries/2008-June/009991.html:
      
          Law <l1> states that
      
          > sep (ps++[empty]++qs)   = sep (ps ++ qs)
          >         ...ditto hsep, hcat, vcat, fill...
      
          In the current implementation, this fails for the paragraph fill
          variants.
      
          > render' $ fsep [ text "c", text "c",empty, text "c", text "b"]
          >   where render' = renderStyle (Style PageMode 7 1.4)
          >> c c c
          >>     b
      67576ddc
    • Herbert Valerio Riedel's avatar
      Bump template-haskell to new major version 2.11 · 8cce7e4b
      Herbert Valerio Riedel authored
      ...since we already have introduced backward compat breakage
      that breaks packages such as QuickCheck-2.8.1
      
      Differential Revision: https://phabricator.haskell.org/D1144
      8cce7e4b
  4. 11 Aug, 2015 2 commits
  5. 10 Aug, 2015 1 commit
  6. 09 Aug, 2015 3 commits
  7. 08 Aug, 2015 2 commits
  8. 07 Aug, 2015 5 commits
  9. 06 Aug, 2015 9 commits
    • eir@cis.upenn.edu's avatar
      Rejigger OSMem.my_mmap to allow building on Mac · bc43d23a
      eir@cis.upenn.edu authored
      Previously, the prot and flags variables were set but never used
      on Mac (darwin). This caused a warning, and the build setup stopped
      compilation. This commit is intended simply to omit these variables
      when building with darwin_HOST_OS set. No change in behavior on any
      platform is intended.
      bc43d23a
    • rwbarton's avatar
    • Ben Gamari's avatar
      llvmGen: Rework LLVM mangler · 600b153a
      Ben Gamari authored
      The LLVM mangler does not currently transform AVX instructions on x86-64
      platforms, due to a missing #include. Also, it is significantly more
      complicated than necessary, due to the file into sections (not needed
      anymore), and is sensitive to the details of the whitespace in the
      assembly.
      
      Author: dobenour
      
      Test Plan: Validation on x86-64, x86-32, and ARM
      
      Reviewers: austin
      
      Subscribers: thomie, bgamari, rwbarton
      
      Differential Revision: https://phabricator.haskell.org/D1034
      
      GHC Trac Issues: #10394
      600b153a
    • Fumiaki Kinoshita's avatar
      base: Add instances · 97843d0b
      Fumiaki Kinoshita authored
      This patch adds following instances:
      
      * Foldable ZipList
      * Traversable ZipList
      * Functor Complex
      * Applicative Complex
      * Monad Complex
      * Foldable Complex
      * Traversable Complex
      * Generic1 Complex
      * Monoid a => Monoid (Identity a)
      * Storable ()
      
      Reviewers: ekmett, fumieval, hvr, austin
      
      Subscribers: thomie, #core_libraries_committee
      
      Projects: #core_libraries_committee
      
      Differential Revision: https://phabricator.haskell.org/D1049
      
      GHC Trac Issues: #10609
      97843d0b
    • Ben Gamari's avatar
      Ensure DynFlags are consistent · eca9a1a1
      Ben Gamari authored
      While we have always had makeDynFlagsConsistent to enforce a variety of
      consistency invariants on DynFlags, it hasn't been widely used.
      GHC.Main, for instance, ignored it entirely. This leads to issues like
      Trac #10549, where an OPTIONS_GHC pragma introduced an inconsistency,
      leading to a perplexing crash later in compilation.
      
      Here I add consistency checks in GHC.Main.set{Session,Program}DynFlags,
      closing this hole.
      
      Fixes #10549.
      
      Test Plan: Validate with T10549
      
      Reviewers: austin
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D1128
      
      GHC Trac Issues: #10549
      eca9a1a1
    • Simon Peyton Jones's avatar
      Test Trac #10742 · 64dba511
      Simon Peyton Jones authored
      64dba511
    • Simon Peyton Jones's avatar
      T8968-1 and -3 should pass · 294553e9
      Simon Peyton Jones authored
      See Trac #9953, comment:22.
      294553e9
    • Simon Peyton Jones's avatar
      Comments only · cc07c401
      Simon Peyton Jones authored
      cc07c401
    • Simon Peyton Jones's avatar
      Coments only · 75f5f23b
      Simon Peyton Jones authored
      75f5f23b
  10. 05 Aug, 2015 3 commits
    • Simon Peyton Jones's avatar
      Fix quantification for inference with sigs · 28096b27
      Simon Peyton Jones authored
      When we are *inferring* the type of a let-bound function,
      we might still have a type signature.  And we must be sure
      to quantify over its type variables, else you get the crash
      in Trac #10615.
      
      See Note [Which type variables to quantify] in TcSimplify
      28096b27
    • Simon Peyton Jones's avatar
      Tidy up and refactor wildcard handling · 95364812
      Simon Peyton Jones authored
      When examining #10615, I found the wildcard handling hard
      to understand.  This patch refactors quite a bit, but with
      no real change in behaviour.
      
       * Split out TcIdSigInfo from TcSigInfo, as a separate type,
         like TcPatSynInfo.
      
       * Make TcIdSigInfo express more invariants by pushing the
         wildard info into TcIdSigBndr
      
       * Remove all special treatment of unification variables that arise
         from wildcards; so the TauTv of TcType.MetaInfo loses its Bool
         argument.
      
      A ton of konck on changes.  The result is significantly simpler, I think.
      95364812
    • Simon Peyton Jones's avatar
      Minor refactor to use filterInScope · ab988608
      Simon Peyton Jones authored
      ab988608