1. 13 Nov, 2016 2 commits
    • Ben Gamari's avatar
      Kill Type pretty-printer · 6c0f10fa
      Ben Gamari authored
      Here we consolidate the pretty-printing logic for types in IfaceType. We
      need IfaceType regardless and the printer for Type can be implemented in
      terms of that for IfaceType. See #11660.
      
      Note that this is very much a work-in-progress. Namely I still have yet
      to ponder how to ease the hs-boot file situation, still need to rip out
      more dead code, need to move some of the special cases for, e.g., `*` to
      the IfaceType printer, and need to get it to validate. That being said,
      it comes close to validating as-is.
      
      Test Plan: Validate
      
      Reviewers: goldfire, austin
      
      Subscribers: goldfire, thomie, simonpj
      
      Differential Revision: https://phabricator.haskell.org/D2528
      
      GHC Trac Issues: #11660
      6c0f10fa
    • Ben Gamari's avatar
      rts: Fix references to UChar · 8cb7bc5c
      Ben Gamari authored
      Test Plan: Validate on Windows.
      
      Reviewers: erikd, austin, simonmar
      
      Reviewed By: erikd
      
      Subscribers: Phyx, thomie
      
      Differential Revision: https://phabricator.haskell.org/D2700
      8cb7bc5c
  2. 12 Nov, 2016 7 commits
  3. 11 Nov, 2016 4 commits
    • Ben Gamari's avatar
      Pass -no-pie to GCC · d421a7e2
      Ben Gamari authored
      Certain distributions (e.g. Debian and Ubuntu) have enabled PIE be
      default in their GCC packaging. This breaks our abuse of GCC as a linker
      which requires that we pass -Wl,-r, which is incompatible with
      PIE (since the former implies that we are generating a relocatable
      object file and the latter an executable).
      
      This is a second attempt at D2691. This attempt constrasts with D2691 in that
      it preserves the "does gcc support -no-pie" flag in settings, allowing this to
      be reconfigured by `configure` during installation of a binary distribution.
      Thanks for @rwbarton for drawing attention to this issue.
      
      Test Plan: Validate
      
      Reviewers: austin, hvr, erikd
      
      Reviewed By: erikd
      
      Subscribers: thomie, rwbarton, erikd
      
      Differential Revision: https://phabricator.haskell.org/D2693
      
      GHC Trac Issues: #12759
      d421a7e2
    • Ben Gamari's avatar
      rts: Fix LoadArchive on OS X · ec0bf811
      Ben Gamari authored
      ec0bf811
    • Simon Peyton Jones's avatar
      Revert "Refactor CallStack defaulting slightly" · 7a7bb5d2
      Simon Peyton Jones authored
      This reverts commit 317236db.
      
      I totally missed that in simplifyInfer for local functions
      we must NOT default call stacks.  So I'm reverting this.
      
      Fortunately caught by T10845, which sadly isn't run by
      validate --fast
      7a7bb5d2
    • Ben Gamari's avatar
      Revert "Pass -no-pie to GCC" · 60bb9d1c
      Ben Gamari authored
      This reverts commit bae4a55b.
      
      This will be superceded by D2693.
      60bb9d1c
  4. 10 Nov, 2016 15 commits
    • Ryan Scott's avatar
      Prevent GND from inferring an instance context for method-less classes · 03e8d26f
      Ryan Scott authored
      When `GeneralizedNewtypeDeriving` is used with a type class that has no
      methods, it will generate a redundant context, and as a result, it can
      trigger warnings when compiled with `-Wredundant-constraints`. This is a
      simple change in behavior to check beforehand if a class has methods
      when deriving it with GND, and if it has no methods, avoid inferring the
      redundant context.
      
      Beware that the test for #6088, which used to be expected to fail, now
      compiles without issue since it doesn't infer a problematic instance
      context.
      
      Thanks to Simon Peyton Jones for doing the necessary refactoring in
      f05d685a.
      
      Fixes #12814.
      
      Test Plan: ./validate
      
      Reviewers: goldfire, rwbarton, simonpj, austin, bgamari
      
      Reviewed By: simonpj
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D2692
      
      GHC Trac Issues: #12814
      03e8d26f
    • thomasw's avatar
      Update user's guide after D2490 · e8ae4dc8
      thomasw authored
      D2490 added support for type wildcards in TH pattern splices. The user's
      guide still said that they were not supported, this patch fixes this.
      
      Test Plan: build documentation
      
      Reviewers: goldfire, austin, mvv, bgamari
      
      Reviewed By: bgamari
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D2686
      
      GHC Trac Issues: #12164
      e8ae4dc8
    • Ben Gamari's avatar
      rts/linker: Move loadArchive to new source file · aa10c67e
      Ben Gamari authored
      Test Plan: Validate
      
      Reviewers: DemiMarie, austin, simonmar, erikd
      
      Reviewed By: DemiMarie
      
      Subscribers: Phyx, thomie, hvr
      
      Differential Revision: https://phabricator.haskell.org/D2642
      
      GHC Trac Issues: #12388
      aa10c67e
    • darshan's avatar
      rts: Add api to pin a thread to a numa node but without fixing a capability · 122d826d
      darshan authored
      `rts_setInCallCapability` sets the thread affinity as well as pins the
      numa node. We should also have the ability to set the numa node without
      setting the capability affinity. `rts_pinNumaNodeForCapability` function
      is added and exported via `RtsAPI.h`.
      
      Previous callers of `rts_setInCallCapability` should now also call
      `rts_pinNumaNodeForCapability` to get the same effect as before.
      
      Test Plan:
        ./validate
      
      Reviewers: austin, simonmar, bgamari
      
      Reviewed By: simonmar, bgamari
      
      Subscribers: thomie, niteria
      
      Differential Revision: https://phabricator.haskell.org/D2637
      
      GHC Trac Issues: #12764
      122d826d
    • David Feuer's avatar
      Read parentheses better · bef7e784
      David Feuer authored
      Instead of pulling a token and looking for `'('` or `')'`,
      just look for the character itself. This prevents us from
      lexing every single item twice, once to see if it's a
      left parenthesis and once to actually parse it.
      
      Partially fixes #12665
      
      Make parens faster more aggressively
      
      * Strip spaces before parsing, so we never have to strip
      the same spaces twice.
      
      * String parsers together manually, to try to avoid unnecessary closure
      creation.
      
      Test Plan: Validate
      
      Reviewers: austin, hvr, bgamari
      
      Reviewed By: bgamari
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D2630
      
      GHC Trac Issues: #12665
      bef7e784
    • Ben Gamari's avatar
      Add Richard Eisenberg's new email to mailmap · e06e21af
      Ben Gamari authored
      Reviewers: austin, mpickering
      
      Reviewed By: mpickering
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D2689
      e06e21af
    • Ben Gamari's avatar
      0a122a4c
    • Ben Gamari's avatar
      Pass -no-pie to GCC · bae4a55b
      Ben Gamari authored
      Certain distributions (e.g. Debian and Ubuntu) have enabled PIE be
      default in their GCC packaging. This breaks our abuse of GCC as a linker
      which requires that we pass -Wl,-r, which is incompatible with
      PIE (since the former implies that we are generating a relocatable
      object file and the latter an executable).
      
      Test Plan: Validate
      
      Reviewers: hvr, austin
      
      Subscribers: rwbarton, thomie, erikd
      
      Differential Revision: https://phabricator.haskell.org/D2691
      
      GHC Trac Issues: #12759
      bae4a55b
    • Ben Gamari's avatar
      configure: Pass HC_OPTS_STAGEx to build system · 9030d8e4
      Ben Gamari authored
      Test Plan: Try `./configure HC_OPTS_STAGE0=-foobar` and watch it fail
      
      Reviewers: austin, hvr
      
      Subscribers: thomie, erikd
      
      Differential Revision: https://phabricator.haskell.org/D2674
      9030d8e4
    • Ben Gamari's avatar
      build system: Include CONF_LD_LINKER_OPTS in ALL_LD_OPTS · 816d2e41
      Ben Gamari authored
      This ensures that artifacts built with build-prog see these options.
      Also spruce up comments.
      
      Test Plan: Carefully read it.
      
      Reviewers: austin, hvr, erikd
      
      Reviewed By: erikd
      
      Subscribers: thomie, erikd
      
      Differential Revision: https://phabricator.haskell.org/D2673
      816d2e41
    • Ben Gamari's avatar
      ghc-cabal: Use correct name of linker flags env variable · 500d90d2
      Ben Gamari authored
      Currently passing the `CONF_LD_LINKER_OPTS_STAGE0` environment
      variable to `configure` is broken due to this naming inconsistency.
      
      Test Plan: Try passing `CONF_LD_LINKER_OPTS_STAGE0` to `configure`.
      Look at resulting stage0 ghc invocation.
      
      Reviewers: austin
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D2672
      500d90d2
    • Simon Peyton Jones's avatar
      Refactor CallStack defaulting slightly · 317236db
      Simon Peyton Jones authored
      This moves call-stack defaulting from simpl_top to solveWanteds,
      for reasons described in Note [CallStack defaulting].
      
      No change in visible behaviour.
      317236db
    • Simon Peyton Jones's avatar
      Refactoring of mkNewTypeEqn · f05d685a
      Simon Peyton Jones authored
      The refactoring here is very small.  I did it while studying
      Trac #12814.
      
      To implement the change in #12814, we can just un-comment the
      lines at line 1275.  It's ready to go but I didn't want to pull
      the trigger in this commit
      f05d685a
    • Simon Peyton Jones's avatar
      Adapt the (commented out) pprTrace in OccurAnal · 7fe71636
      Simon Peyton Jones authored
      I did this while investigating Trac #12776
      7fe71636
    • Alex Biehl's avatar
      Fix comment about pointer tagging · 2325afe9
      Alex Biehl authored
      `Lcall` enters the closure. If it has tags we jump directly to `Lret`. 
      
      Confirmed with some generated cmm code: 
      
      ```
                 R1 = _s2pP::P64;
                 Sp = Sp - 8;
                 if (R1 & 7 != 0) goto c2x0; else goto c2x1;
             c2x1:
                 call (I64[R1])(R1) returns to c2x0, args: 8, res: 8, upd: 8;
             c2x0:
                 _s2pQ::P64 = R1;
      ```
      2325afe9
  5. 07 Nov, 2016 2 commits
    • Ryan Scott's avatar
      Update 8.0.2 release notes for #12784 · 2e8463b2
      Ryan Scott authored
      Summary:
      The fix for #12220 exposed some ill-typed programs which passed the typechecker
      in GHC 8.0.1 but now fail to typecheck in GHC 8.0.2. It's a bit difficult to
      characterize what exactly triggers this bug, but we at least have a minimal
      example and a simple fix to illustrate the problem and solution, so let's
      add that the the 8.0.2 release notes to advertise this change.
      
      Resolves #12784.
      
      Reviewers: rwbarton, austin, bgamari
      
      Reviewed By: bgamari
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D2682
      
      GHC Trac Issues: #12784
      2e8463b2
    • Simon Marlow's avatar
      Fix hs_try_putmvar003 (#12800) · 91f9e138
      Simon Marlow authored
      Summary:
      There was a race condition on some shared data when creating the
      callback thread.
      
      I couldn't repro the issue without inserting a dummy usleep(100), but
      it's definitely a bug.
      
      Test Plan: validate
      
      Reviewers: bgamari, austin, erikd
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D2678
      
      GHC Trac Issues: #12800
      91f9e138
  6. 06 Nov, 2016 6 commits
    • Tamar Christina's avatar
      Fix broken validate build. · 7d988dd4
      Tamar Christina authored
      7d988dd4
    • Tamar Christina's avatar
      Some minor linker cleanups. · 1964d869
      Tamar Christina authored
      Summary:
      Just some cleanups to some oddities I've noticed
      while investigating a linker issue.
      
      Particularly the dll name returned by `findSysDll`
      was decorated. So foo.dll is returned. We make it
      `foo.dll.dll` and later drop one `.dll` when passed to
      `addDll` which expects it without extension, but still
      tries the name *as is* which is why it worked.
      
      This should be slightly faster, since we don't try 4 loads
      before we succeed.
      
      Test Plan: ./validate
      
      Reviewers: austin, hvr, erikd, simonmar, bgamari
      
      Reviewed By: bgamari
      
      Subscribers: thomie, #ghc_windows_task_force
      
      Differential Revision: https://phabricator.haskell.org/D2680
      1964d869
    • Ryan Scott's avatar
      Describe symptoms of (and the cure for) #12768 in 8.0.2 release notes · ead83db8
      Ryan Scott authored
      GHC 8.0.2 introduced a bugfix involving GeneralizedNewtypeDeriving in
      96d45145. This made typechecking of
      GND-produced code a bit stricter, and an unfortunate side effect of this was
      that there were a couple of corner-case programs that stopped compiling
      when transitioning from GHC 8.0.1 to 8.0.2.
      
      Since the number of affected programs seems quite small, and since the fix
      is so straightforward, we opt to simply note this discrepancy in the 8.0.2
      release notes.
      
      Resolves #12768.
      ead83db8
    • Ryan Scott's avatar
      Allow GeneralizedNewtypeDeriving for classes with associated type families · 630d8817
      Ryan Scott authored
      Summary:
      This implements the ability to derive associated type family instances
      for newtypes automatically using `GeneralizedNewtypeDeriving`. Refer to the
      users' guide additions for how this works; I essentially follow the pattern
      laid out in https://ghc.haskell.org/trac/ghc/ticket/8165#comment:18.
      
      Fixes #2721 and #8165.
      
      Test Plan: ./validate
      
      Reviewers: simonpj, goldfire, austin, bgamari
      
      Reviewed By: simonpj
      
      Subscribers: mpickering, thomie
      
      Differential Revision: https://phabricator.haskell.org/D2636
      
      GHC Trac Issues: #2721, #8165
      630d8817
    • Matthew Pickering's avatar
      Add tracing infrastructure to pattern match checker · 25c8e80e
      Matthew Pickering authored
      Summary:
      This is the start of some tracing infrastructure which I found useful
      when working through how the pattern match checker worked.
      
      It adds the flag -ddump-ec-trace in order to turn on the trace.
      
      Reviewers: austin, bgamari
      
      Reviewed By: bgamari
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D2658
      25c8e80e
    • Matthew Pickering's avatar
      Stop -dno-debug-output suppressing -ddump-tc-trace · 1c886ead
      Matthew Pickering authored
      Summary:
      The user manual states that -dno-debug-output should suppress
      *unsolicited* debugging output which essentially amounts to calls
      to `pprTrace`. Before I unified the interface of `traceTc` and
      `traceRn`, the flag suppressed calls to `traceTc` but not to `traceRn`
      or any other tracing function already controlled by a flag.
      
      Thus, in order to make the behaviour more uniform, it seemed best to
      remove this one special case.
      
      Reviewers: austin, bgamari
      
      Reviewed By: bgamari
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D2628
      
      GHC Trac Issues: #12691
      1c886ead
  7. 05 Nov, 2016 2 commits
  8. 04 Nov, 2016 2 commits