1. 28 Aug, 2014 30 commits
  2. 27 Aug, 2014 2 commits
  3. 26 Aug, 2014 1 commit
    • Sergei Trofimovich's avatar
      UNREG: fix emission of large Integer literals in C codegen · 43f1b2ec
      Sergei Trofimovich authored
      
      
      Summary:
      On amd64/UNREG build there is many failing tests trying
      to deal with 'Integer' types.
      
      Looking at 'integerConversions' test I've observed
      invalid C code generated by GHC.
      
      Cmm code
          CInt a = -1; (a == -1)
      yields 'False' with optimisations enabled via the following C code:
          StgWord64 a = (StgWord32)0xFFFFffffFFFFffffu; (a == 0xFFFFffffFFFFffffu)
      
      The patch fixes it by shrinking emitted literals to required sizes:
          StgWord64 a = (StgWord32)0xFFFFffffu; (a == 0xFFFFffffu)
      
      Thanks to Reid Barton for tracking down and fixing the issue.
      Signed-off-by: default avatarSergei Trofimovich <slyfox@gentoo.org>
      
      Test Plan: validate on UNREG build (amd64, x86)
      
      Reviewers: simonmar, rwbarton, austin
      
      Subscribers: hvr, simonmar, ezyang, carter
      
      Differential Revision: https://phabricator.haskell.org/D173
      43f1b2ec
  4. 25 Aug, 2014 7 commits
    • Simon Peyton Jones's avatar
      Improve documentation of record wildcards · 67a6ade9
      Simon Peyton Jones authored
      In particular mention that they aren't allowed for record updates.
      
      Triggered by Trac #9437
      67a6ade9
    • Simon Peyton Jones's avatar
      Two buglets in record wild-cards (Trac #9436 and #9437) · 06600e74
      Simon Peyton Jones authored
      of named fields, whereas the code in RnPat.rnHsRecFields is
      much better set up to do so.
      
      Both easily fixed.
      06600e74
    • Simon Peyton Jones's avatar
      Check for un-saturated type family applications · ee4501bb
      Simon Peyton Jones authored
      This patch corrects an egregious error introduced by:
      
        commit 022f8750
        Author: Simon Peyton Jones <simonpj@microsoft.com>
        Date:   Thu May 15 16:07:04 2014 +0100
      
          Refactoring around TyCon.isSynTyCon
      
          * Document isSynTyCon better
          * Add isTypeSyonymTyCon for regular H98 type synonyms
          * Use isTypeSynonymTyCon rather than isSynTyCon where
            the former is really intended
      
      At this particular spot in TcValidity we really do mean
      isSynTyCon and not isTypeSynonymTyCon.
      
      Fixes Trac #9433
      ee4501bb
    • Simon Peyton Jones's avatar
      Make Core Lint check for un-saturated type applications · 8ff46714
      Simon Peyton Jones authored
      Un-saturated type-family and type-synonym applications are
      detected in the front end, but for some reason Lint wasn't
      looking for them.
      
      I came across this when wondering why Trac #9433 didn't give
      a Core Lint error
      8ff46714
    • Simon Peyton Jones's avatar
      More refactoring in SpecConstr · 5c4df288
      Simon Peyton Jones authored
      This patch should make no change in behaviour.
      
       * Make RhsInfo into a record
      
       * Include ri_rhs_usg, which previously travelled around separately
      
       * Introduce specRec, specNonRec, and
         make them return [OneSpec] rather than SpecInfo
      5c4df288
    • Simon Peyton Jones's avatar
      Do not duplicate call information in SpecConstr (Trac #8852) · af4bc31c
      Simon Peyton Jones authored
      This long-standing and egregious bug meant that call information was
      being gratuitously copied, leading to an exponential blowup in the
      number of calls to be examined when function definitions are deeply
      nested.  That is what has been causing the blowup in SpecConstr's
      running time, not (as I had previously supposed) generating very large code.
      
      See Note [spec_usg includes rhs_usg]
      af4bc31c
    • Simon Peyton Jones's avatar
      Introduce the Call data types · c0fe1d9e
      Simon Peyton Jones authored
      This is just a small refactoring that makes the code a bit clearer,
      using a data type instead of a triple.  We get better pretty-printing too.
      c0fe1d9e