1. 02 Oct, 2015 7 commits
    • Ben Gamari's avatar
      LLVM: Implement atomic operations in terms of LLVM primitives · bd41eb2a
      Ben Gamari authored
      This fixes Trac #7883.
      
      This adds proper support for,
        * `MO_AtomicRMW`
        * `MO_AtomicWrite`
        * `MO_CmpXChg`
      
      Test Plan: Validate
      
      Reviewers: rrnewton, austin
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D1282
      
      GHC Trac Issues: #7883
      bd41eb2a
    • Peter Trommler's avatar
      nativeGen PPC: fix > 16 bit offsets in stack handling · b29f20ed
      Peter Trommler authored
      Implement access to spill slots at offsets larger than 16 bits.
      Also allocation and deallocation of spill slots was restricted to
      16 bit offsets. Now 32 bit offsets are supported on all PowerPC
      platforms.
      
      The implementation of 32 bit offsets requires more than one instruction
      but the native code generator wants one instruction. So we implement
      pseudo-instructions that are pretty printed into multiple assembly
      instructions.
      
      With pseudo-instructions for spill slot allocation and deallocation
      we can also implement handling of the back chain pointer according
      to the ELF ABIs.
      
      Test Plan: validate (especially on powerpc (32 bit))
      
      Reviewers: bgamari, austin, erikd
      
      Reviewed By: erikd
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D1296
      
      GHC Trac Issues: #7830
      b29f20ed
    • Matthias Fischmann's avatar
      Document peculiarities of `traceM`. · 57e3742c
      Matthias Fischmann authored
      Reviewers: bgamari, hvr, austin
      
      Reviewed By: bgamari, hvr, austin
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D1289
      57e3742c
    • Ben Gamari's avatar
      Fix treatment of -0.0 · eb975d2e
      Ben Gamari authored
      Here we fix a few mis-optimizations that could occur in code with
      floating point comparisons with -0.0. These issues arose from our
      insistence on rewriting equalities into case analyses and the
      simplifier's ignorance of floating-point semantics.
      
      For instance, in Trac #10215 (and the similar issue Trac #9238) we
      turned `ds == 0.0` into a case analysis,
      
      ```
      case ds of
          __DEFAULT -> ...
          0.0 -> ...
      ```
      
      Where the second alternative matches where `ds` is +0.0 and *also* -0.0.
      However, the simplifier doesn't realize this and will introduce a local
      inlining of `ds = -- +0.0` as it believes this is the only
      value that matches this pattern.
      
      Instead of teaching the simplifier about floating-point semantics
      we simply prohibit case analysis on floating-point scrutinees and keep
      this logic in the comparison primops, where it belongs.
      
      We do several things here,
      
       - Add test cases from relevant tickets
       - Clean up a bit of documentation
       - Desugar literal matches against floats into applications of the
         appropriate equality primitive instead of case analysis
       - Add a CoreLint to ensure we don't pattern match on floats in Core
      
      Test Plan: validate with included testcases
      
      Reviewers: goldfire, simonpj, austin
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D1061
      
      GHC Trac Issues: #10215, #9238
      eb975d2e
    • Joachim Breitner's avatar
      Update nofib submodule again · a52db231
      Joachim Breitner authored
      reverting my bogus commit there.
      a52db231
    • Joachim Breitner's avatar
      Update nofib submodule · f2a174ae
      Joachim Breitner authored
      to contain these commits:
         commit 8bffe3cb01ce404ab493de2b4316f2c1c4a9bda9
         Author: Joachim Breitner <mail@joachim-breitner.de>
         Date:   Fri Oct 2 10:09:17 2015 +0200
      
             Expected output of mandel when run under valgrind
      
             probably due to rounding/floating point precision numbers. It looks
             broken, but so does the existing file spectral/mandel/mandel.stdout-mingw.
      
         commit f9a577973edf6976e4c0703bf2afac900d7b6fd8
         Author: Gabor Greif <ggreif@gmail.com>
         Date:   Fri Jul 31 00:43:38 2015 +0200
      
             Typos in comments
      
         commit 20ae9113ad31eca426883544f597a3cae9b60d94
         Author: Simon Peyton Jones <simonpj@microsoft.com>
         Date:   Fri Apr 24 15:10:02 2015 +0100
      
             Add exact-real-arithmetic benchmark from David Lester
      f2a174ae
    • Herbert Valerio Riedel's avatar
      Add Data.Semigroup and Data.List.NonEmpty (re #10365) · 03b38042
      Herbert Valerio Riedel authored
      This implements phase 1 of the semigroup-as-monoid-superclass
      proposal (https://ghc.haskell.org/wiki/Proposal/SemigroupMonoid).
      
      The modules were migrated from the `semigroups-0.17` release mostly
      as-is, except for dropping several trivial `{-# INLINE #-}`s,
      removing CPP usage, and instances for types & classes provided
      outside of `base` (e.g. `containers`, `deepseq`, `hashable`, `tagged`,
      `bytestring`, `text`)
      
      Differential Revision: https://phabricator.haskell.org/D1284
      03b38042
  2. 01 Oct, 2015 1 commit
  3. 30 Sep, 2015 2 commits
  4. 28 Sep, 2015 1 commit
    • Joachim Breitner's avatar
      Allow enumDeltaIntegerFB to be inlined · 78053f44
      Joachim Breitner authored
      The function is very small and the compiler should be at liberty to
      inline it. But it is recursive, so it did not do it before. By applying
      the usual transformation with a local recursive function, GHC can now
      inline it, producing the loop that one would expect.
      78053f44
  5. 26 Sep, 2015 2 commits
    • Ömer Sinan Ağacan's avatar
      reify associated types when reifying typeclasses(#10891) · b4d43b4e
      Ömer Sinan Ağacan authored
      As reported in Trac #10891, Template Haskell's `reify` was not
      generating Decls for associated types. This patch fixes that.
      
      Note that even though `reifyTyCon` function used in this patch returns
      some type instances, I'm ignoring that.
      
      Here's an example of how associated types are encoded with this patch:
      
      (Simplified representation)
      
          class C a where
            type F a :: *
      
          -->
      
          OpenTypeFamilyD "F" ["a"]
      
      With default type instances:
      
          class C a where
            type F a :: *
            type F a = a
      
          -->
      
          OpenTypeFamilyD "F" ["a"]
          TySynInstD "F" (TySynEqn [VarT "a"] "a")
      
      Test Plan:
      This patch was already reviewed and even merged. The patch is later
      reverted because apparently it broke the build some time between the
      validation of this patch and merge. Creating this new ticket to fix the
      validation.
      
      Reviewers: goldfire, austin, bgamari
      
      Reviewed By: bgamari
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D1277
      
      GHC Trac Issues: #10891
      b4d43b4e
    • Ben Gamari's avatar
      rts: Clean up whitespace in Trace.h · 988b2baa
      Ben Gamari authored
      988b2baa
  6. 25 Sep, 2015 5 commits
  7. 24 Sep, 2015 5 commits
  8. 23 Sep, 2015 9 commits
  9. 22 Sep, 2015 4 commits
    • Ben Gamari's avatar
      HscMain: Place CPP macro invocation on one line · 4cdab73f
      Ben Gamari authored
      Clang's CPP implementation seems to barf otherwise
      4cdab73f
    • Ryan Scott's avatar
      DeriveLift extension (#1830) · 089b72f5
      Ryan Scott authored
      Summary:
      This implements -XDeriveLift, which allows for automatic derivation
      of the Lift class from template-haskell. The implementation is based
      off of Ian Lynagh's th-lift library
      (http://hackage.haskell.org/package/th-lift).
      
      Test Plan: ./validate
      
      Reviewers: hvr, simonpj, bgamari, goldfire, austin
      
      Reviewed By: goldfire, austin
      
      Subscribers: osa1, thomie
      
      Differential Revision: https://phabricator.haskell.org/D1168
      
      GHC Trac Issues: #1830
      089b72f5
    • niteria's avatar
      Make derived names deterministic · d4d34a73
      niteria authored
      The names of auxiliary bindings end up in the interface file, and since uniques
      are nondeterministic, we end up with nondeterministic interface files.
      
      This uses the package and module name in the generated name, so I believe it
      should avoid problems from #7947 and be deterministic as well.
      
      The generated names look like this now:
      
        `$cLrlbmVwI3gpI8G2E6Hg3mO`
      
      and with `-ppr-debug`:
      
        `$c$aeson_70dylHtv1FFGeai1IoxcQr$Data.Aeson.Types.Internal$String`.
      
      Reviewed By: simonmar, austin, ezyang
      
      Differential Revision: https://phabricator.haskell.org/D1133
      
      GHC Trac Issues: #4012
      d4d34a73
    • Eric Seidel's avatar
      base: use Show for ErrorCall in uncaughtExceptionHandler · 0b852fcf
      Eric Seidel authored
      The default top-level exception handler now uses the `Show` instance for
      `ErrorCall` when printing exceptions, so it will actually print the out-of-band
      data (e.g. `CallStack`s) in compiled binaries, instead of just printing the
      error message.
      
      This also updates the hpc submodule to fix the test output.
      
      Reviewed By: austin, thomie
      
      Differential Revision: https://phabricator.haskell.org/D1217
      0b852fcf
  10. 21 Sep, 2015 4 commits