1. 21 Jul, 2015 7 commits
  2. 19 Jul, 2015 1 commit
  3. 18 Jul, 2015 1 commit
  4. 17 Jul, 2015 2 commits
  5. 15 Jul, 2015 4 commits
    • Ben Gamari's avatar
      Fix T10196 expected output · 66428afa
      Ben Gamari authored
      66428afa
    • Eric Seidel's avatar
      Expose source locations via Implicit Parameters of type GHC.Location.Location · e3dc2804
      Eric Seidel authored
      IPs with this type will always be solved for the current source
      location. If another IP of the same type is in scope, the two locations will be
      appended, creating a call-stack. The Location type is kept abstract so users
      cannot create them, but a Location can be turned into a list of SrcLocs, which
      correspond to individual locations in a program. Each SrcLoc contains a
      package/module/file name and start/end lines and columns.
      
      The only thing missing from the SrcLoc in my opinion is the name of the
      top-level definition it inhabits. I suspect that would also be useful, but it's
      not clear to me how to extract the current top-level binder from within the
      constraint solver. (Surely I'm just missing something here?)
      
      I made the (perhaps controversial) decision to have GHC completely ignore
      the names of Location IPs, meaning that in the following code:
      
          bar :: (?myloc :: Location) => String
          bar = foo
      
          foo :: (?loc :: Location) => String
          foo = show ?loc
      
      if I call `bar`, the resulting call-stack will include locations for
      
      1. the use of `?loc` inside `foo`,
      2. `foo`s call-site inside `bar`, and
      3. `bar`s call-site, wherever that may be.
      
      This makes Location IPs very special indeed, and I'm happy to change it if the
      dissonance is too great.
      
      I've also left out any changes to base to make use of Location IPs, since there
      were some concerns about a snowball effect. I think it would be reasonable to
      mark this as an experimental feature for now (it is!), and defer using it in
      base until we have more experience with it. It is, after all, quite easy to
      define your own version of `error`, `undefined`, etc. that use Location IPs.
      
      Test Plan: validate, new test-case is testsuite/tests/typecheck/should_run/IPLocation.hs
      
      Reviewers: austin, hvr, simonpj
      
      Reviewed By: simonpj
      
      Subscribers: simonmar, rodlogic, carter, thomie
      
      Differential Revision: https://phabricator.haskell.org/D578
      
      GHC Trac Issues: #9049
      
      Cherry-Picked-From: c024af13Cherry-Picked-By: default avatarNiklas Hambüchen <niklas@fpcomplete.com>
      
      Changes for the cherry-pick:
      
      * Commit d2b6e767 "Make the location in TcLclEnv and CtLoc into a RealSrcSpan"
        was cherry-picked before to ensure that
          EvCsPushCall, EvCsTop :: EvCallStack
        can indeed carry `RealSrcSpan`s instead of `SrcSpan`s.
      * The use of `setWantedEvBind` was replaced by `setEvBind`, as
        `setWantedEvBind` is not yet present in 7.10.1; it was added to
        the 7.12 series in commit 32973bf3.
      * docs/users_guide/7.10.1-notes.xml was adjusted to contain the
        documentation about CallStack, copied from the 7.12 notes.
      e3dc2804
    • Simon Peyton Jones's avatar
      Make the location in TcLclEnv and CtLoc into a RealSrcSpan · 00cd6173
      Simon Peyton Jones authored
      Previously it was a SrcSpan, which can be an UnhelpulSrcSpan,
      but actually for TcLclEnv and CtLoc we always know it is
      a real source location, and it's good to make the types
      reflect that fact.
      
      There is a continuing slight awkwardness (not new with this
      patch) about what "file name" to use for GHCi code.  Current
      we say "<interactive>" which seems just about OK.
      00cd6173
    • Ben Gamari's avatar
      Do not treat prim and javascript imports as C imports in TH and QQ · 98587f0c
      Ben Gamari authored
      This fixes trac Trac #10638.
      98587f0c
  6. 14 Jul, 2015 3 commits
    • Simon Peyton Jones's avatar
      Make sure rule LHSs are simplified · 3cadf440
      Simon Peyton Jones authored
      SpecConstr was generating a rule LHS with nested casts,
      which the simplifier then optimised away.  Result: unbound
      template variables.
      
      Easily fixed.  See Note [SpecConstr call patterns]
      3cadf440
    • Simon Peyton Jones's avatar
      Do not optimise RULE lhs in substRule · 3794b597
      Simon Peyton Jones authored
      This was causing Trac #10627.
      See Note [Substitute lazily] in CoreSubst.
      
      The bug was introduced by
         commit 30c17e70
          Author: simonpj@microsoft.com <unknown>
          Date:   Thu Nov 25 17:23:56 2010 +0000
          Substitution should just substitute, not optimise
      
      The fix is not to optimise the RHS as well as not-optimising the LHS!
      The simplifier does the right thing in Simplify.simplRule
      3794b597
    • thomie's avatar
      parser: Allow Lm (MODIFIER LETTER) category in identifiers · 358e0a8d
      thomie authored
      Easy fix in the parser to stop regressions, due to Unicode 7.0 changing
      the classification of some prior code points.
      Signed-off-by: default avatarAustin Seipp <austin@well-typed.com>
      
      Test Plan: `tests/parser/should_compile/T10196.hs`
      
      Reviewers: hvr, austin, bgamari
      
      Reviewed By: austin, bgamari
      
      Subscribers: thomie, bgamari
      
      Differential Revision: https://phabricator.haskell.org/D969
      
      GHC Trac Issues: #10196
      358e0a8d
  7. 10 Jul, 2015 10 commits
    • Ben Gamari's avatar
      Parenthesization wibble in T10279. · 51de9342
      Ben Gamari authored
      See Trac #10624.
      51de9342
    • Edward Z. Yang's avatar
      48692720
    • Edward Z. Yang's avatar
      Make mkQualPackage more robust when package key is bad. · c808656b
      Edward Z. Yang authored
      Signed-off-by: default avatarEdward Z. Yang <ezyang@cs.stanford.edu>
      
      Test Plan: validate
      
      Reviewers: bgamari, austin
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D1060
      
      GHC Trac Issues: #10624
      c808656b
    • Ben Gamari's avatar
      Fix self-contained handling of ASCII encoding · 677552f2
      Ben Gamari authored
      D898 was primarily intended to fix hangs in the event that iconv was
      unavailable (namely #10298 and #7695). In addition to this fix, it also
      introduced self-contained handling of ANSI terminals to allow compiled
      executables to run in minimal environments lacking iconv.
      
      However, the behavior that the patch introduced is highly suspicious.
      Specifically, it gives the user a UTF-8 encoding even if they requested
      ASCII.
      
      This has the potential to break quite a lot of code. At very least it
      breaks GHC's Unicode terminal detection logic, which attempts to catch
      an invalid character when encoding a pair of smart-quotes. Of course,
      this exception will never be thrown if a UTF-8 encoder is used.
      
      Here we use the `char8` encoding to handle requests for ASCII encodings.
      
      Fixes #10623.
      677552f2
    • Ben Gamari's avatar
      Fix T2507 expected output · 4fd62218
      Ben Gamari authored
      This seems to have been changed in
      07282c72 to include Unicode quotes
      despite the fact that we explicitly set LC_ALL=C in the Makefile to
      request standard ASCII output.
      4fd62218
    • Ben Gamari's avatar
      Add testcase for #10602 · 9938a40e
      Ben Gamari authored
      9938a40e
    • Ben Gamari's avatar
      Recenter performance numbers · 73105e2f
      Ben Gamari authored
      These are fairly small changes. I'm just going to recenter these and
      then focus on identifying the reason for the drift on master
      73105e2f
    • Simon Peyton Jones's avatar
      Add an ambient Id substitution to Subst · 1171d420
      Simon Peyton Jones authored
      After a struggle, I fixed Trac #5113 (again) on the 7.10 branch,
      by adding an ambient substitution to Subst; see CoreSubst,
      esp Note [IdSubstEnv].
      
      This allowed me to do the impedence-matching in SimplEnv.substExpr
      efficiently (fixing #10370) as well correctly (fixing the latest
      problem with #5113).
      
      This cost me more time than I like to say.  Sigh.
      1171d420
    • Sergei Trofimovich's avatar
      driver: pass '-fPIC' option to all CC invocations · 0e7e6114
      Sergei Trofimovich authored
      Reported by mitchty:
      
        When porting ghc to alpine linux (rumors say they build
        all binaries as Position Independent Executables
        to leverage global ASLR) linker issued obscure errors:
      
      Tiny example:
          $ echo 'main = print "hello"' > a.hs
          $ ghc -fforce-recomp a.hs -fPIC -dynamic -optl-pie -o a
              ld: /tmp/ghc2142_0/ghc2142_5.o: relocation R_X86_64_32 against `ZCMain_main_closure'
                  can not be used when making a shared object; recompile with -fPIC
              /tmp/ghc2142_0/ghc2142_5.o: error adding symbols: Bad value
              collect2: error: ld returned 1 exit status
      
      There is two entry points in CC driver:
          'runPhase' (CC) and 'mkExtraObj'
      
      'mkExtraObj' does not handle most of 'runPhase's complexity.
      Ideally it should.
      
      This patch only adds -fPIC propagation to 'mkExtraObj'.
      
      Please merge to stable branch.
      Signed-off-by: default avatarSergei Trofimovich <siarheit@google.com>
      0e7e6114
    • thomie's avatar
      Testsuite: mark T4945 as expect_broken (#4945) · 7fa3b23c
      thomie authored
      In commit 7d519dab, the file
      T4945.stdout was added to the repository, to make T4945 pass
      validatation presumably.
      
      When that test produces output however, there is a bug somewhere, and we
      shouldn't hide it. There is a comment in the Makefile which says:
      
          "When SpecConstr works there are no STUArrays at all"
      
      So here we remove T4945.stdout again, mark T4945 as expect_broken, and
      reopen the ticket.
      
      Differential Revision: https://phabricator.haskell.org/D976
      
      Conflicts:
      	testsuite/tests/simplCore/should_compile/T4945.stdout
      	testsuite/tests/simplCore/should_compile/all.T
      7fa3b23c
  8. 07 Jul, 2015 3 commits
  9. 06 Jul, 2015 3 commits
    • Simon Peyton Jones's avatar
      Use lazy substitution in simplCast · 07a1f32e
      Simon Peyton Jones authored
      It turned out that the terrible compiler performance in
      Trac #10527 arose because we were simplifying a function
      argument that subseuqently was discarded, so the work was
      wasted.  Moreover, the work turned out to be substantial;
      indeed it made an asymptotic difference to compile time.
      
      Ths solution in this 7.10 branch is a bit brutal; just
      duplicate CoreSubst.substExpr to be SimplEnv.substExprS.
      It works fine I'm working on a better solution for HEAD.
      07a1f32e
    • Gabor Greif's avatar
      Fix typo in error message · df6665e0
      Gabor Greif authored
      df6665e0
    • Ben Gamari's avatar
      Specialise: Avoid unnecessary recomputation of free variable information · f7ede672
      Ben Gamari authored
      When examining compile times for code with large ADTs (particularly those with
      many record constructors), I found that the specialiser contributed
      disproportionately to the compiler runtime. Some profiling suggested that
      the a great deal of time was being spent in `pair_fvs` being called from
      `consDictBind`.
      
      @simonpj pointed out that `flattenDictBinds` as called by `specBind` was
      unnecessarily discarding cached free variable information, which then needed to
      be recomputed by `pair_fvs`.
      
      Here I refactor the specializer to retain the free variable cache whenever
      possible.
      
      **Open Qustions**
      
       * I used `fst` in a couple of places to extract the bindings from a `DictBind`.
         Perhaps this is a sign that `DictBind` has outgrown its type synonym status?
      
      Test Plan: validate
      
      Reviewers: austin, simonpj
      
      Reviewed By: simonpj
      
      Subscribers: thomie, bgamari, simonpj
      
      Differential Revision: https://phabricator.haskell.org/D1012
      
      GHC Trac Issues: #7450
      f7ede672
  10. 04 Jul, 2015 1 commit
    • eir@cis.upenn.edu's avatar
      Fix some validation errors. · 93790bbc
      eir@cis.upenn.edu authored
      Summary:
      This fixes test cases T10019 and T10534
      
      The patch for T10019 should be back-ported to master as well.
      
      Posting via Phab as a way to distribute a patch against the
      ghc-7.10 branch, which I don't have push access to.
      
      Test Plan: validate
      
      Reviewers: austin, bgamari
      
      Reviewed By: bgamari
      
      Subscribers: thomie, bgamari, mzero
      
      Differential Revision: https://phabricator.haskell.org/D1036
      93790bbc
  11. 30 Jun, 2015 1 commit
    • Matthew Pickering's avatar
      Correct BangPat SrcSpan calculation · 5560861e
      Matthew Pickering authored
      Summary:
      Previously when the split was performed in splitBang, `BangPat` was given the
      same SrcSpan as the whole of the LHS of the declaration. This patch
      correctly calculates the value.
      
      Reviewers: alanz, austin
      
      Reviewed By: alanz, austin
      
      Subscribers: thomie, bgamari
      
      Differential Revision: https://phabricator.haskell.org/D1020
      
      GHC Trac Issues: #10588
      
      (cherry picked from commit c6bb2fc5)
      5560861e
  12. 28 Jun, 2015 1 commit
  13. 27 Jun, 2015 1 commit
  14. 26 Jun, 2015 2 commits
    • Simon Marlow's avatar
      Fix deadlock (#10545) · a6ef59cd
      Simon Marlow authored
      yieldCapability() was not prepared to be called by a Task that is not
      either a worker or a bound Task.  This could happen if we ended up in
      yieldCapability via this call stack:
      
      performGC()
      scheduleDoGC()
      requestSync()
      yieldCapability()
      
      and there were a few other ways this could happen via requestSync.
      The fix is to handle this case in yieldCapability(): when the Task is
      not a worker or a bound Task, we put it on the returning_workers
      queue, where it will be woken up again.
      
      Summary of changes:
      
      * `yieldCapability`: factored out subroutine waitForWorkerCapability`
      * `waitForReturnCapability` renamed to `waitForCapability`, and
        factored out subroutine `waitForReturnCapability`
      * `releaseCapabilityAndQueue` worker renamed to `enqueueWorker`, does
        not take a lock and no longer tests if `!isBoundTask()`
      * `yieldCapability` adjusted for refactorings, only change in behavior
        is when it is not a worker or bound task.
      
      Test Plan:
      * new test concurrent/should_run/performGC
      * validate
      
      Reviewers: niteria, austin, ezyang, bgamari
      
      Subscribers: thomie, bgamari
      
      Differential Revision: https://phabricator.haskell.org/D997
      
      GHC Trac Issues: #10545
      
      (cherry picked from commit 111ba4be)
      a6ef59cd
    • Simon Marlow's avatar
      Fix for crash in setnumcapabilities001 · 6de9b6eb
      Simon Marlow authored
      getNewNursery() was unconditionally incrementing next_nursery, which
      is normally fine but it broke an assumption in
      storageAddCapabilities().  This manifested as an occasional crash in
      the setnumcapabilities001 test.
      
      (cherry picked from commit be0ce871)
      6de9b6eb