1. 07 Nov, 2017 1 commit
  2. 06 Nov, 2017 10 commits
  3. 03 Nov, 2017 8 commits
    • Andreas Klebinger's avatar
      436b3ef0
    • Julie Moronuki's avatar
      change example from msum to mfilter · df479f7c
      Julie Moronuki authored
      df479f7c
    • cydparser's avatar
      Fix documentation and comment issues · 5d48f7ce
      cydparser authored
      5d48f7ce
    • David Feuer's avatar
      Deserialize all function TypeReps · 19ca2cab
      David Feuer authored
      Previously, we could only deserialize `TypeRep (a -> b)` if
      both `a` and `b` had kind `Type`. Now, we do it regardless of
      their runtime representations.
      
      Reviewers: austin, bgamari
      
      Reviewed By: bgamari
      
      Subscribers: rwbarton, thomie
      
      Differential Revision: https://phabricator.haskell.org/D4137
      19ca2cab
    • David Feuer's avatar
      Name TypeRep constructor fields · 3c8e55ce
      David Feuer authored
      Give `TypeRep` constructor fields names, and use them when pattern
      matching and constructing values. This is a bit verbose, but makes
      it obvious which field means what.
      
      Reviewers: austin, hvr, bgamari
      
      Reviewed By: bgamari
      
      Subscribers: rwbarton, thomie
      
      Differential Revision: https://phabricator.haskell.org/D4136
      3c8e55ce
    • alexbiehl's avatar
      Bump haddock submodule · eb371322
      alexbiehl authored
      Reviewers: austin, bgamari
      
      Subscribers: rwbarton, thomie
      
      Differential Revision: https://phabricator.haskell.org/D4144
      eb371322
    • Ben Gamari's avatar
      llvmGen: Pass vector arguments in vector registers by default · 15f788f5
      Ben Gamari authored
      Earlier this year Edward Kmett requested [1] that we enable passing of
      vector values in vector registers by default. The GHC calling convention
      changes have been in LLVM for a number of years now so let's just flip
      the switch.
      
      [1] https://mail.haskell.org/pipermail/ghc-devs/2017-March/013905.html
      
      Reviewers: austin
      
      Subscribers: rwbarton, thomie
      
      Differential Revision: https://phabricator.haskell.org/D4142
      15f788f5
    • alexbiehl's avatar
      CmmSink: Use a IntSet instead of a list · 43537568
      alexbiehl authored
      CmmProcs which have *lots* of local variables take a considerable
      amount of time in CmmSink. This was noticed by @tdammers in #7258
      while compiling files with large records (~200-400 fields).
      
      Before:
      
      ```
              Sun Oct 29 19:58 2017 Time and Allocation Profiling Report (Final)
      
                 ghc-stage2 +RTS -p -RTS
      -B/Users/alexbiehl/git/ghc/inplace/lib /Users/alexbiehl/Downloads/W2.hs
      -fforce-recomp -O2
      
              total time  =       26.00 secs   (25996 ticks @ 1000 us, 1 processor)
              total alloc = 14,921,627,912 bytes  (excludes profiling overheads)
      
      COST CENTRE     MODULE      SRC %time %alloc
      
      sink            CmmPipeline
      compiler/cmm/CmmPipeline.hs:(104,13)-(105,59)        55.7   15.9
      SimplTopBinds   SimplCore   compiler/simplCore/SimplCore.hs:761:39-74 19.5   30.6
      FloatOutwards   SimplCore   compiler/simplCore/SimplCore.hs:471:40-66 4.2    9.0
      RegAlloc-linear AsmCodeGen compiler/nativeGen/AsmCodeGen.hs:(658,27)-(660,55)    4.0   11.1
      pprNativeCode   AsmCodeGen compiler/nativeGen/AsmCodeGen.hs:(529,37)-(530,65)    2.8    6.3
      NewStranal      SimplCore   compiler/simplCore/SimplCore.hs:480:40-63 1.6    3.7
      OccAnal         SimplCore compiler/simplCore/SimplCore.hs:(739,22)-(740,67)     1.5    3.5
      StgCmm          HscMain compiler/main/HscMain.hs:(1426,13)-(1427,62)          1.2    2.4
      regLiveness     AsmCodeGen compiler/nativeGen/AsmCodeGen.hs:(591,17)-(593,52)    1.2    1.9
      genMachCode     AsmCodeGen compiler/nativeGen/AsmCodeGen.hs:(580,17)-(582,62)    0.9    1.8
      NativeCodeGen   CodeOutput  compiler/main/CodeOutput.hs:171:18-78 0.9    2.1
      CoreTidy        HscMain     compiler/main/HscMain.hs:1253:27-67 0.8    1.9
      ```
      
      After:
      
      ```
              Sun Oct 29 19:18 2017 Time and Allocation Profiling Report (Final)
      
                 ghc-stage2 +RTS -p -RTS
      -B/Users/alexbiehl/git/ghc/inplace/lib /Users/alexbiehl/Downloads/W2.hs
      -fforce-recomp -O2
      
              total time  =       13.31 secs   (13307 ticks @ 1000 us, 1 processor)
              total alloc = 15,772,184,488 bytes  (excludes profiling overheads)
      
      COST CENTRE     MODULE         SRC %time %alloc
      
      SimplTopBinds   SimplCore
      compiler/simplCore/SimplCore.hs:761:39-74            38.3   29.0
      sink            CmmPipeline compiler/cmm/CmmPipeline.hs:(104,13)-(105,59)        13.2   20.3
      RegAlloc-linear AsmCodeGen compiler/nativeGen/AsmCodeGen.hs:(658,27)-(660,55)    8.3   10.5
      FloatOutwards   SimplCore compiler/simplCore/SimplCore.hs:471:40-66             8.1    8.5
      pprNativeCode   AsmCodeGen compiler/nativeGen/AsmCodeGen.hs:(529,37)-(530,65)    5.4    5.9
      NewStranal      SimplCore compiler/simplCore/SimplCore.hs:480:40-63             3.1    3.5
      OccAnal         SimplCore compiler/simplCore/SimplCore.hs:(739,22)-(740,67)     2.9    3.3
      StgCmm          HscMain compiler/main/HscMain.hs:(1426,13)-(1427,62)          2.3    2.3
      regLiveness     AsmCodeGen compiler/nativeGen/AsmCodeGen.hs:(591,17)-(593,52)    2.1    1.8
      NativeCodeGen   CodeOutput     compiler/main/CodeOutput.hs:171:18-78 1.7    2.0
      genMachCode     AsmCodeGen compiler/nativeGen/AsmCodeGen.hs:(580,17)-(582,62)    1.6    1.7
      CoreTidy        HscMain        compiler/main/HscMain.hs:1253:27-67 1.4    1.8
      foldNodesBwdOO  Hoopl.Dataflow compiler/cmm/Hoopl/Dataflow.hs:(397,1)-(403,17)       1.1    0.8
      ```
      
      Reviewers: austin, bgamari, simonmar
      
      Reviewed By: bgamari
      
      Subscribers: duog, rwbarton, thomie, tdammers
      
      GHC Trac Issues: #7258
      
      Differential Revision: https://phabricator.haskell.org/D4145
      43537568
  4. 02 Nov, 2017 10 commits
  5. 31 Oct, 2017 1 commit
    • Simon Peyton Jones's avatar
      Tidy up IfaceEqualityTyCon · 29ae8337
      Simon Peyton Jones authored
      This commit
      
        commit 85aa1f42
        Date:   Sun Oct 29 20:48:19 2017 -0400
          Fix #14390 by making toIfaceTyCon aware of equality
      
      was a bit over-complicated. This patch simplifies the (horribly
      ad-hoc) treatement of IfaceEqualityTyCon, and documents it better.
      
      No visible change in behaviour.
      29ae8337
  6. 30 Oct, 2017 10 commits
    • lukemaurer's avatar
      core-spec: Add join points to formalism · af0aea9c
      lukemaurer authored
      af0aea9c
    • Simon Peyton Jones's avatar
      609f2844
    • Gabor Greif's avatar
      Catch a few more typos in comments · 201b5aa6
      Gabor Greif authored
      201b5aa6
    • Gabor Greif's avatar
      minor wordsmithing · 53700a9d
      Gabor Greif authored
      53700a9d
    • Gabor Greif's avatar
      Typofixes in comments · 15696682
      Gabor Greif authored
      15696682
    • Gabor Greif's avatar
      Typofix in panic · ec356e8a
      Gabor Greif authored
      ec356e8a
    • Gabor Greif's avatar
      Fix typo in accessor name · 1b115b16
      Gabor Greif authored
      and in comments
      1b115b16
    • Simon Peyton Jones's avatar
      A bit more tc-tracing · 82bad1a9
      Simon Peyton Jones authored
      82bad1a9
    • Michal Terepeta's avatar
      Allow packing constructor fields · cca2d6b7
      Michal Terepeta authored
      This is another step for fixing #13825 and is based on D38 by Simon
      Marlow.
      
      The change allows storing multiple constructor fields within the same
      word. This currently applies only to `Float`s, e.g.,
      ```
      data Foo = Foo {-# UNPACK #-} !Float {-# UNPACK #-} !Float
      ```
      on 64-bit arch, will now store both fields within the same constructor
      word. For `WordX/IntX` we'll need to introduce new primop types.
      
      Main changes:
      
      - We now use sizes in bytes when we compute the offsets for
        constructor fields in `StgCmmLayout` and introduce padding if
        necessary (word-sized fields are still word-aligned)
      
      - `ByteCodeGen` had to be updated to correctly construct the data
        types. This required some new bytecode instructions to allow pushing
        things that are not full words onto the stack (and updating
        `Interpreter.c`). Note that we only use the packed stuff when
        constructing data types (i.e., for `PACK`), in all other cases the
        behavior should not change.
      
      - `RtClosureInspect` was changed to handle the new layout when
        extracting subterms. This seems to be used by things like `:print`.
        I've also added a test for this.
      
      - I deviated slightly from Simon's approach and use `PrimRep` instead
        of `ArgRep` for computing the size of fields.  This seemed more
        natural and in the future we'll probably want to introduce new
        primitive types (e.g., `Int8#`) and `PrimRep` seems like a better
        place to do that (where we already have `Int64Rep` for example).
        `ArgRep` on the other hand seems to be more focused on calling
        functions.
      Signed-off-by: Michal Terepeta's avatarMichal Terepeta <michal.terepeta@gmail.com>
      
      Test Plan: ./validate
      
      Reviewers: bgamari, simonmar, austin, hvr, goldfire, erikd
      
      Reviewed By: bgamari
      
      Subscribers: maoe, rwbarton, thomie
      
      GHC Trac Issues: #13825
      
      Differential Revision: https://phabricator.haskell.org/D3809
      cca2d6b7
    • Ryan Scott's avatar
      Fix #14390 by making toIfaceTyCon aware of equality · 85aa1f42
      Ryan Scott authored
      GHC was panicking when pretty-printing a heterogeneous
      equality type constructor (#14390) because the function which
      produced the type constructor, `toIfaceTyCon`, wasn't attaching the
      appropriate `IfaceTyConSort` for equality type constructors, which
      is `IfaceEqualityTyCon`. This is fixed easily enough.
      
      Test Plan: make test TEST=T14390
      
      Reviewers: austin, bgamari
      
      Reviewed By: bgamari
      
      Subscribers: rwbarton, thomie
      
      GHC Trac Issues: #14390
      
      Differential Revision: https://phabricator.haskell.org/D4132
      85aa1f42