1. 17 Dec, 2016 3 commits
    • Rufflewind's avatar
      Windows: Improve terminal detection mechanism · 3dbd2b09
      Rufflewind authored
      The previous detection mechanism allowed environment variables (ANSICON,
      ConEmuANSI, TERM) to supersede the fact that the stderr is not a
      terminal, which is probably what led to color codes appearing in the
      stderr of the tests (see: 847d2293).
      
      This commit changes the detection mechanism to detect Cygwin/MSYS2
      terminals in a more reliable manner, avoiding the use of environment
      variables entirely.
      
      Test Plan: validate
      
      Reviewers: Phyx, austin, erikd, bgamari
      
      Reviewed By: Phyx, bgamari
      
      Subscribers: RyanGlScott, thomie
      
      Differential Revision: https://phabricator.haskell.org/D2809
      3dbd2b09
    • eir@cis.upenn.edu's avatar
      Reshuffle levity polymorphism checks. · 8906e7b7
      eir@cis.upenn.edu authored
      Previously, GHC checked for bad levity polymorphism to the left of all
      arrows in data constructors. This was wrong, as reported in #12911
      (where an example is also shown). The solution is to check each
      individual argument for bad levity polymorphism.  Thus the check has
      been moved from TcValidity to TcTyClsDecls.
      
      A similar situation exists with pattern synonyms, also fixed here.
      
      This patch also nabs #12819 while I was in town.
      
      Test cases: typecheck/should_compile/T12911, patsyn/should_fail/T12819
      
      Test Plan: ./validate
      
      Reviewers: simonpj, austin, bgamari
      
      Reviewed By: bgamari
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D2783
      
      GHC Trac Issues: #12819, #12911
      8906e7b7
    • Ben Gamari's avatar
      Revert "Do not init record accessors as exported" · 0af959b1
      Ben Gamari authored
      This reverts commit 3a00ff92 due
      to #12993
      0af959b1
  2. 16 Dec, 2016 7 commits
  3. 15 Dec, 2016 9 commits
    • Ben Gamari's avatar
      UniqSupply: Use full range of machine word · 0d213c18
      Ben Gamari authored
      Currently uniques are 32-bits wide. 8 of these bits are for the unique
      class, leaving only 24 for the unique number itself. This seems
      dangerously small for a large project. Let's use the full range of the
      native machine word.
      
      We also add (now largely unnecessary) overflow check to ensure that the
      unique number doesn't overflow.
      
      Test Plan: Validate
      
      Reviewers: simonmar, austin, niteria
      
      Reviewed By: niteria
      
      Subscribers: mpickering, thomie
      
      Differential Revision: https://phabricator.haskell.org/D2844
      
      GHC Trac Issues: #12944
      0d213c18
    • Ben Gamari's avatar
      base: Bump version to 4.10.0.0 · 4d683fa1
      Ben Gamari authored
      Updates a number of submodules.
      4d683fa1
    • Ryan Scott's avatar
      Warn about missing instance methods that start with an underscore · 503219e3
      Ryan Scott authored
      Previously, GHC would not warn whenever there was a class instance that
      didn't implement a class method whose name begins with an underscore.
      
      Fixes #12959.
      
      Test Plan: make test TEST=WarnMinimal
      
      Reviewers: austin, bgamari, simonpj
      
      Reviewed By: bgamari, simonpj
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D2849
      
      GHC Trac Issues: #12959
      503219e3
    • Matthew Pickering's avatar
      Fix pretty printing of MINIMAL signatures · 1ec632f8
      Matthew Pickering authored
      Reviewers: austin, alanz, bgamari
      
      Reviewed By: alanz, bgamari
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D2836
      1ec632f8
    • Simon Marlow's avatar
      Fix cost-centre-stacks bug (#5654) · 394231b3
      Simon Marlow authored
      This fixes some cases of wrong stacks being generated by the profiler.
      For background and details on the fix see
      `Note [Evaluating functions with profiling]` in `rts/Apply.cmm`.
      
      This does have an impact on allocations for some programs when
      profiling.  nofib results:
      
      ```
         k-nucleotide          +0.0%     +8.8%    +11.0%    +11.0%      0.0%
               puzzle          +0.0%    +12.5%     0.244     0.246      0.0%
            typecheck           0.0%     +8.7%    +16.1%    +16.2%      0.0%
      ------------------------------------------------------------------------
      --------
                  Min          -0.0%     -0.0%    -34.4%    -35.5%    -25.0%
                  Max          +0.0%    +12.5%    +48.9%    +49.4%    +10.6%
       Geometric Mean          +0.0%     +0.6%     +2.0%     +1.8%     -0.3%
      
      ```
      
      But runtimes don't seem to be affected much, and the examples I looked
      at were completely legitimate.  For example, in puzzle we have this:
      
      ```
      position :: ItemType -> StateType ->  BankType
      position Bono = bonoPos
      position Edge = edgePos
      position Larry = larryPos
      position Adam = adamPos
      ```
      
      where the identifiers on the rhs are all record selectors.  Previously
      the profiler gave a stack that looked like
      
      ```
        position
        bonoPos
        ...
      ```
      
      i.e. `bonoPos` was at the same level of the call stack as `position`,
      but now it looks like
      
      ```
        position
         bonoPos
         ...
      ```
      
      I used the normaliser from the testsuite to diff the profiling output
      from other nofib programs and they all looked better.
      
      Test Plan:
      * the broken test passes
      * validate
      * compiled and ran all of nofib, measured perf, diff'd several .prof
      files
      
      Reviewers: niteria, erikd, austin, scpmw, bgamari
      
      Reviewed By: bgamari
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D2804
      
      GHC Trac Issues: #5654, #10007
      394231b3
    • Ryan Scott's avatar
      Make unboxedTuple{Type,Data}Name support 0- and 1-tuples · 9550b8d8
      Ryan Scott authored
      Previously, these functions were hardcoded so as to always `error`
      whenever given an argument of 0 or 1. This restriction can be lifted
      pretty easily, however.
      
      This requires a slight tweak to `isBuiltInOcc_maybe` in `TysWiredIn` to
      allow it to recognize `Unit#` (which is the hard-wired `OccName` for
      unboxed 1-tuples).
      
      Fixes #12977.
      
      Test Plan: make test TEST=12977
      
      Reviewers: austin, goldfire, bgamari
      
      Reviewed By: bgamari
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D2847
      
      GHC Trac Issues: #12977
      9550b8d8
    • Michal Terepeta's avatar
      procPointAnalysis doesn't need UniqSM · 27287c80
      Michal Terepeta authored
      `procPointAnalysis` doesn't need to run in `UniqSM` (it consists of a
      single `return` and the call to `analyzeCmm` function which is pure).
      Making it non-monadic simplifies the code a bit.
      Signed-off-by: Michal Terepeta's avatarMichal Terepeta <michal.terepeta@gmail.com>
      
      Test Plan: validate
      
      Reviewers: austin, bgamari, simonmar
      
      Reviewed By: simonmar
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D2837
      27287c80
    • shlevy's avatar
      Fix pprCLabel on platforms without native codegen. · 3c7cf18c
      shlevy authored
      D1290 added a panic in a code path that can be reached when
      !cGhcWithNativeCodeGen.  This reverts just that part of that patch.
      
      Reviewers: austin, simonmar, bgamari, xnyhps
      
      Reviewed By: simonmar
      
      Subscribers: xnyhps, thomie
      
      Differential Revision: https://phabricator.haskell.org/D2831
      3c7cf18c
    • Maciej Bielecki's avatar
      Show constraints when reporting typed holes · 0c3341b2
      Maciej Bielecki authored
      This patch implements the display of constraints in the error message
      for typed holes.
      
      Test Plan: validate, read docs
      
      Reviewers: simonpj, austin, bgamari
      
      Reviewed By: simonpj, bgamari
      
      Subscribers: simonpj, thomie
      
      Differential Revision: https://phabricator.haskell.org/D2767
      
      GHC Trac Issues: #10614
      0c3341b2
  4. 14 Dec, 2016 1 commit
  5. 13 Dec, 2016 5 commits
  6. 12 Dec, 2016 5 commits
    • Alan Zimmerman's avatar
      Add infix flag for class and data declarations · 8f6d241a
      Alan Zimmerman authored
      Summary:
      At the moment, data and type declarations using infix formatting produce the
      same AST as those using prefix.
      
      So
      
          type a ++ b = c
      
      and
      
          type (++) a b = c
      
      cannot be distinguished in the parsed source, without looking at the OccName
      details of the constructor being defined.
      
      Having access to the OccName requires an additional constraint which explodes
      out over the entire AST because of its recursive definitions.
      
      In keeping with moving the parsed source to more directly reflect the source
      code as parsed, add a specific flag to the declaration to indicate the fixity,
      as used in a Match now too.
      
      Note: this flag is to capture the fixity used for the lexical definition of the
      type, primarily for use by ppr and ghc-exactprint.
      
      Updates haddock submodule.
      
      Test Plan: ./validate
      
      Reviewers: mpickering, goldfire, bgamari, austin
      
      Reviewed By: mpickering
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D2828
      
      GHC Trac Issues: #12942
      8f6d241a
    • Simon Peyton Jones's avatar
      Float unboxed expressions by boxing · bc3d37da
      Simon Peyton Jones authored
      This patch makes GHC's floating more robust, by allowing it
      to float unboxed expressions of at least some common types.
      
      See Note [Floating MFEs of unlifted type] in SetLevels.
      
      This was all provoked by Trac #12603
      bc3d37da
    • Simon Peyton Jones's avatar
      Fix a long-standing bug in CSE · d03dd237
      Simon Peyton Jones authored
      I had the environments wrong so that CSE could mis-clone
      an expression, if the uniques just happened to be badly
      arranged.  It's hard to trigger the bug, so I can't make
      a reliable test case.
      
      Happily the fix is easy.
      d03dd237
    • Simon Peyton Jones's avatar
      Make dropDerivedSimples restore [WD] constraints · f1036ad8
      Simon Peyton Jones authored
      I'd forgotten to turn [W] + [D] constraints back into [WD]
      in dropDerivedSimples; and that led to Trac #12936.
      
      Fortunately the fix is simple.
      f1036ad8
    • Simon Peyton Jones's avatar
      Refactor pruning of implication constraints · 818e027e
      Simon Peyton Jones authored
      We try to prune solved implication constraints, but it's a
      bit tricky because of our desire to correctly report unused
      'givens'.  This patch improves matters a bit... in tracig some
      other bug I saw lots of empty constraints lying around!
      818e027e
  7. 11 Dec, 2016 1 commit
    • Moritz Angermann's avatar
      Make globals use sharedCAF · c3c70244
      Moritz Angermann authored
      Summary:
      The use of globals is quite painful when multiple rts are loaded, e.g.
      when plugins are loaded, which bring in a second rts. The sharedCAF
      appraoch was employed for the FastStringTable; I've taken the libery
      to extend this to the other globals I could find.
      
      This is a reboot of D2575, that should hopefully not exhibit the same
      windows build issues.
      
      Reviewers: Phyx, simonmar, goldfire, bgamari, austin, hvr, erikd
      
      Reviewed By: Phyx, simonmar, bgamari
      
      Subscribers: mpickering, thomie
      
      Differential Revision: https://phabricator.haskell.org/D2773
      c3c70244
  8. 09 Dec, 2016 7 commits
    • Ryan Scott's avatar
      Rename TH constructors for deriving strategies · 5349d648
      Ryan Scott authored
      After talking to Richard, he and I concluded that choosing the rather
      common name `Newtype` to represent the corresponding deriving strategy
      in Template Haskell was a poor choice of name. I've opted to rename it
      to something less common (`NewtypeStrategy`) while we still have time. I
      also renamed the corrsponding datatype in the GHC internals so as to
      match it.
      
      Reviewers: austin, goldfire, hvr, bgamari
      
      Reviewed By: bgamari
      
      Subscribers: thomie, mpickering
      
      Differential Revision: https://phabricator.haskell.org/D2814
      
      GHC Trac Issues: #10598
      5349d648
    • Peter Trommler's avatar
      NCG: Implement trivColorable for PowerPC 64-bit · 2823492e
      Peter Trommler authored
      Define constants for 64-bit PowerPC in graph coloring register
      allocator.
      
      Test Plan: ./validate
      
      Reviewers: simonmar, austin, erikd, bgamari, hvr
      
      Reviewed By: bgamari
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D2791
      2823492e
    • dobenour's avatar
      Fix LLVM TBAA metadata · 90fae01c
      dobenour authored
      Accesses through a Cmm local are currently reported as having the
      "other" type, which can only alias other "other" accesses.  However,
      this assumption is incorrect, which can result in silent bad LLVM
      codegen.
      
      Fixes #9308.
      Fixes #9504.
      
      Test Plan: GHC CI
      
      Reviewers: rwbarton, austin, bgamari
      
      Reviewed By: bgamari
      
      Subscribers: michalt, thomie
      
      Differential Revision: https://phabricator.haskell.org/D2758
      
      GHC Trac Issues: #9125, #9308, #9504
      90fae01c
    • Sylvain Henry's avatar
      Export `warningGroups' and `warningHierarchies' · 1c296c0c
      Sylvain Henry authored
      Reviewers: austin, mpickering, bgamari
      
      Reviewed By: mpickering, bgamari
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D2806
      1c296c0c
    • Rufflewind's avatar
      Disable colors unless printing to stderr · cee72d5c
      Rufflewind authored
      Only print colors when mkLocMessageAnn is called directly from
      defaultLogAction.  This prevents ANSI error codes from cluttering up the
      dump files.
      
      Test Plan: validate
      
      Reviewers: austin, bgamari
      
      Reviewed By: bgamari
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D2792
      
      GHC Trac Issues: #12927
      cee72d5c
    • Sylvain Henry's avatar
      Scrutinee Constant Folding · d3b546b1
      Sylvain Henry authored
      This patch introduces new rules to perform constant folding through
      case-expressions.
      
      E.g.,
      ```
      case t -# 10# of _ {  ===> case t of _ {
               5#      -> e1              15#     -> e1
               8#      -> e2              18#     -> e2
               DEFAULT -> e               DEFAULT -> e
      ```
      
      The initial motivation is that it allows "Merge Nested Cases"
      optimization to kick in and to further simplify the code
      (see Trac #12877).
      
      Currently we recognize the following operations for Word# and Int#: Add,
      Sub, Xor, Not and Negate (for Int# only).
      
      Test Plan: validate
      
      Reviewers: simonpj, austin, bgamari
      
      Reviewed By: simonpj, bgamari
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D2762
      
      GHC Trac Issues: #12877
      d3b546b1
    • Ryan Scott's avatar
      Disambiguate reified closed type family kinds in TH · f65ff2c4
      Ryan Scott authored
      Summary:
      A continuation of #8953. This fixes an oversight in which the
      left-hand sides of closed type families, when reified in Template Haskell,
      would not be given kind annotations, even when they are necessary for
      disambiguation purposes in the presence of `PolyKinds`.
      
      Fixes #8953 and #12646.
      
      Test Plan: ./validate
      
      Reviewers: hvr, bgamari, austin, goldfire
      
      Reviewed By: goldfire
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D2795
      
      GHC Trac Issues: #8953, #12646
      f65ff2c4
  9. 08 Dec, 2016 2 commits
    • Michal Terepeta's avatar
      BlockId: remove BlockMap and BlockSet synonyms · 2bb099e5
      Michal Terepeta authored
      This continues removal of `BlockId` module in favor of Hoopl's `Label`.
      Most of the changes here are mechanical, apart from the orphan
      `Outputable` instances for `LabelMap` and `LabelSet`.  For now I've
      moved them to `cmm/Hoopl`, since it's already trying to manage all
      imports from Hoopl (to avoid any collisions).
      Signed-off-by: Michal Terepeta's avatarMichal Terepeta <michal.terepeta@gmail.com>
      
      Test Plan: validate
      
      Reviewers: bgamari, austin, simonmar
      
      Reviewed By: simonmar
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D2800
      2bb099e5
    • Ben Gamari's avatar
      nativeGen: Fix string merging on Windows · 55361b38
      Ben Gamari authored
      D1290 places string constants in the `.rodata.str` section with `aMS`
      section flags so that the linker can merge them. However, it seems that
      ld doesn't understand these flags. It appears that `gcc
      -fmerge-constants` uses the `dr` flags on Windows. Make GHC do the same.
      
      Test Plan: Validate on Windows
      
      Reviewers: xnyhps, austin, Phyx
      
      Reviewed By: Phyx
      
      Subscribers: thomie, trommler
      
      Differential Revision: https://phabricator.haskell.org/D2797
      
      GHC Trac Issues: #9577
      55361b38