This project is mirrored from Pull mirroring failed .
Repository mirroring has been paused due to too many failed attempts. It can be resumed by a project maintainer.
Last successful update .
  1. 12 Apr, 2017 3 commits
    • Simon Peyton Jones's avatar
      Fix another literal-string buglet · 8346334e
      Simon Peyton Jones authored
      We were failing to float a nested binding
         x :: Addr# = "foo"#
      to top level, even though we /were/ floating string
      literals themselves.  A small oversight, easily fixed.
    • Simon Peyton Jones's avatar
      Improve demand analysis for join points · b5b7d820
      Simon Peyton Jones authored
      I realised (Trac #13543) that we can improve demand analysis for
      join point quite straightforwardly.
      The idea is explained in
          Note [Demand analysis for join points]
      in DmdAnal
    • Simon Peyton Jones's avatar
      Kill off complications in CoreFVs · 751996e9
      Simon Peyton Jones authored
      When doing type-in-type, Richard introduce some substantial
      complications in CoreFVs, gathering types and free variables
      of type.  In Trac #13160 we decided that this complication was
      unnecessary, so this patch removes it.
      Unfortnately I then fell down a twisty rabbit hole.  Roughly:
      * An apparently-innocuous change in the AnnApp case of
        fiExpr made the fuction a little bit stricter, so we ended
        up peering into the arguments when we didn't before (namely
        when there are no bindings being floated inwards).  I've
        rejigged it so that it's not fragile any more.
      * Peering into the arguments was sometimes expensive, becuase
        exprIsExpandable can be expensive because it looks deeply into
        the expression.
      * The combination of the two led to a non-linear explosion
        of work when the argument of a function is a deeep nest
        of constructors.  This bug has been lurking for ages.
        I solved it by replacing exprIsExpandable with exprIsHNF
        + exprIsTrivial; see Note [noFloatInto considerations]
      * The code around floating case-expressions turned out to be
        very delicate, because can_fail primops (which we want to
        float inwards) can't be floated outwards; so we have to be
        careful never to float them too far. Note [Floating primops]
        has the details
      * I ended up refactoring some rather opaque code in
      Working all this out meant that I rewrote quite a bit of
      code, so it's now a reasonably substantial patch.  But it's
      a net improvement.
  2. 11 Apr, 2017 6 commits
    • Gabor Greif's avatar
      Typos in comments [ci skip] · fc2a96a1
      Gabor Greif authored
    • Moritz Angermann's avatar
      [Elf/arm] Thumb indicator bit only for STT_FUNC · e662a6cb
      Moritz Angermann authored
      Reviewers: rwbarton, bgamari, austin, erikd, simonmar, trofi
      Reviewed By: trofi
      Subscribers: trofi, thomie
      Differential Revision:
    • Moritz Angermann's avatar
      [MachO] Use OBJFORMAT_MACHO. · 185834e7
      Moritz Angermann authored
      Reviewers: bgamari, austin, erikd, simonmar, rwbarton
      Reviewed By: rwbarton
      Subscribers: rwbarton, thomie
      Differential Revision:
    • Moritz Angermann's avatar
      Enter iserv-proxy · d4631078
      Moritz Angermann authored
      With the introduction of -fexternal-interpreter we are
      now able to compile template haskell via an extern iserv process.
      This however is restricted to the same host, and can therefore
      not be used with crosscompilers where the iserv slave process
      needs to run on a different machine than the cross compiling
      haskell compiler.
      This diff breaks up iserv into a library and the iserv-bin binary.
      It also introduces the iserv-proxy, a proxy instance that the
      haskell compiler can talk to, and which forwards the calls
      to the iserv slave on a different machine, as well as providing
      some extra functionarily (sending files that are not available
      on the machine the slave runs on), as well as forwarding from
      the slave to the haskell compiler, when the slave needs to
      interrogate the haskell compiler.
      The iserv library now also exports the startSlave function to be
      called by the application that implements the slave on the target.
      The simplest such app would probably look something like:
      extern void startServ(bool, const char *);
      int main(int argc, char * argv[]) {
        hs_init(NULL, NULL);
      Special thanks to Shea Levy for the first draft of the iserv-remote,
      from which I took some inspiration.
      The `Buildable` flags are due to ghc-cabal not being able to build
      more than a single target.  Please note that only the stock iserv-bin
      is supposed to be built *with* ghc.  The library and proxy are supposed
      to be built outside of ghc.  Yet I believe that this code should live
      together with iserv.
      Reviewers: simonmar, ezyang, goldfire, austin, rwbarton, bgamari
      Reviewed By: simonmar
      Subscribers: luite, ryantrinkle, shlevy, thomie
      Differential Revision:
    • Ben Gamari's avatar
      Fix form of note · 3a0e5e0f
      Ben Gamari authored
    • Ben Gamari's avatar
  3. 10 Apr, 2017 4 commits
  4. 09 Apr, 2017 2 commits
  5. 08 Apr, 2017 2 commits
    • Sergei Trofimovich's avatar
      cross-build 'unlit' and 'hp2ps' for stage2 install · ff84d052
      Sergei Trofimovich authored
      In navive build case it does not matter much if we build
      'unlit' and 'hp2ps' tools with ghc-stage0 or ghc-stage1:
      both GHCs are native compilers and both tools are written
      in C (have no haskell code).
      But in cross-case the difference is substantial:
      In Stag1Only=YES case we need to install native tools built
      by ghc-stage0/${host}-cc.
      In Stag1Only=NO  case we need to install cross-built tools
      built by ghc-stage1/${target}-cc.
      Before this change GHC did not have a rule to build cross-built
      'unlit' and 'hp2ps'.
      The change adds cross-built 'unlit' and 'hp2ps' as 'dist-install'
      'inplace/lib/bin/unlit.bin' target is unchanged and still contains
      native binary.
      As a result this change allows cross-building and packaging whole
      GHC for target platform!
      Signed-off-by: default avatarSergei Trofimovich <>
    • Sergei Trofimovich's avatar
      fix 'make install' for cross-stage2 · 54895c90
      Sergei Trofimovich authored
      When cross-built GHC is being installed one of
      latest steps is to register installed libraries
      with 'ghc-pkg'.
      GHC uses freshly installed 'ghc-pkg' and 'ghc-stage2'
      for that.
      Tested as:
          ./configure --target=aarch64-unknown-linux-gnu
          make install DESTDIR=$(pwd)/__s2 STRIP_CMD=:
      Before the change install failed on ghc-pkg execution phase:
          ".../ghc-cross/__s2/usr/local/lib/ghc-8.3.20170406/bin/ghc-pkg" \
              --force \
              --global-package-db \
              ".../ghc-cross/__s2/usr/local/lib/ghc-8.3.20170406/package.conf.d" \
              update rts/dist/package.conf.install
          /bin/sh: .../ghc-cross/__s2/usr/local/lib/ghc-8.3.20170406/bin/ghc-pkg: \
              No such file or directory
      To avoid breakage we use 'ghc' and 'ghc-pkg' built by stage0.
      Signed-off-by: default avatarSergei Trofimovich <>
      Test Plan: run 'make install' on stage2 crosscompiler
      Reviewers: rwbarton, austin, bgamari
      Subscribers: thomie, snowleopard
      Differential Revision:
  6. 07 Apr, 2017 1 commit
    • Simon Peyton Jones's avatar
      Do Note [Improving seq] always · f0d98fc6
      Simon Peyton Jones authored
      This patch fixes Trac #13468, and at the same time makes the
      code simpler and more uniform.  In particular, I've eliminated
      the awkward conflict between the old built-in rule for seq
      (which elimianted a cast), and the desire to make case scrutinse
      a data type by doing type-family reduction (which adds a cast).
  7. 06 Apr, 2017 20 commits
  8. 05 Apr, 2017 2 commits