Skip to content
Snippets Groups Projects
  1. May 30, 2008
    • Simon Marlow's avatar
      Fix a bug to do with recursive modules in one-shot mode · d83e1ac4
      Simon Marlow authored
      The problem was that when loading interface files in checkOldIface, we
      were not passing the If monad the mutable variable for use when
      looking up entities in the *current* module, with the result that the
      knots wouldn't be tied properly, and some instances of TyCons would
      be incorrectly abstract.
      
      This bug has subtle effects: for example, recompiling a module without
      making any changes might lead to a slightly different result (noticed
      due to the new interface-file fingerprints).  The bug doesn't lead to
      any direct failures that we're aware of.
  2. May 29, 2008
    • John Dias's avatar
      Replacing copyins and copyouts with data-movement instructions · 0d80489c
      John Dias authored
      o Moved BlockId stuff to a new file to avoid module recursion
      o Defined stack areas for parameter-passing locations and spill slots
      o Part way through replacing copy in and copy out nodes
        - added movement instructions for stack pointer
        - added movement instructions for call and return parameters
          (but not with the proper calling conventions)
      o Inserting spills and reloads for proc points is now procpoint-aware
        (it was relying on the presence of a CopyIn node as a proxy for
         procpoint knowledge)
      o Changed ZipDataflow to expect AGraphs (instead of being polymorphic in
         the type of graph)
      0d80489c
  3. May 30, 2008
  4. May 29, 2008
  5. May 28, 2008
  6. May 29, 2008
    • John Dias's avatar
      Cmm back end upgrades · 25628e27
      John Dias authored
      Several changes in this patch, partially bug fixes, partially new code:
      o bug fixes in ZipDataflow
         - added some checks to verify that facts converge
         - removed some erroneous checks of convergence on entry nodes
         - added some missing applications of transfer functions
      o changed dataflow clients to use ZipDataflow, making ZipDataflow0 obsolete
      o eliminated DFA monad (no need for separate analysis and rewriting monads with ZipDataflow)
      o started stack layout changes
         - no longer generating CopyIn and CopyOut nodes (not yet fully expunged though)
         - still not using proper calling conventions
      o simple new optimizations:
         - common block elimination
            -- have not yet tried to move the Adams opt out of CmmProcPointZ
         - block concatenation
      o piped optimization fuel up to the HscEnv
         - can be limited by a command-line flag
         - not tested, and probably not yet properly used by clients
      o added unique supply to FuelMonad, also lifted unique supply to DFMonad
      25628e27
  7. May 27, 2008
  8. May 28, 2008
    • Simon Marlow's avatar
      Use MD5 checksums for recompilation checking (fixes #1372, #1959) · 526c3af1
      Simon Marlow authored
      This is a much more robust way to do recompilation checking.  The idea
      is to create a fingerprint of the ABI of an interface, and track
      dependencies by recording the fingerprints of ABIs that a module
      depends on.  If any of those ABIs have changed, then we need to
      recompile.
      
      In bug #1372 we weren't recording dependencies on package modules,
      this patch fixes that by recording fingerprints of package modules
      that we depend on.  Within a package there is still fine-grained
      recompilation avoidance as before.
      
      We currently use MD5 for fingerprints, being a good compromise between
      efficiency and security.  We're not worried about attackers, but we
      are worried about accidental collisions.
      
      All the MD5 sums do make interface files a bit bigger, but compile
      times on the whole are about the same as before.  Recompilation
      avoidance should be a bit more accurate than in 6.8.2 due to fixing
      #1959, especially when using -O.
      526c3af1
  9. May 23, 2008
  10. May 27, 2008
  11. May 28, 2008
  12. May 26, 2008
  13. May 01, 2008
  14. May 23, 2008
  15. May 21, 2008
  16. May 22, 2008
  17. May 21, 2008
    • Simon Peyton Jones's avatar
      Fix Trac #1061: refactor handling of default methods · 24f3ffda
      Simon Peyton Jones authored
      In an instance declaration, omitted methods get a definition that
      uses the default method.  We used to generate source code and feed it
      to the type checker.  But tc199 shows that is a bad idea -- see
      Note [Default methods in instances] in TcClassDcl.
      
      So this patch refactors to insteadl all us to generate the 
      *post* typechecked code directly for default methods.
      24f3ffda
    • Simon Peyton Jones's avatar
      Comment typo · 08ffc907
      Simon Peyton Jones authored
      08ffc907
  18. May 20, 2008
  19. May 15, 2008
    • Simon Peyton Jones's avatar
      Tuples cannot contain unboxed types · 48565ca8
      Simon Peyton Jones authored
      This bug allowed, for example
      
        f = let x = ( 1#, 'x' ) in x
      
      which is ill-typed because you can't put an unboxed value in a tuple.
      Core Lint fails on this program.
      
      The patch makes the program be rejcted up-front.
      
      48565ca8
  20. May 20, 2008
  21. May 17, 2008
  22. May 19, 2008
  23. May 20, 2008
  24. May 19, 2008
  25. May 20, 2008
    • rl@cse.unsw.edu.au's avatar
      Add -Odph · 2412b0b3
      rl@cse.unsw.edu.au authored
      This is the optimisation level recommended when compiling DPH programs. At the
      moment, it is equivalent to -O2 -fno-method-sharing -fdicts-cheap
      -fmax-simplifier-iterations20 -fno-spec-constr-threshold.
      2412b0b3
    • rl@cse.unsw.edu.au's avatar
      Make -f[no-]method-sharing a dynamic flag · bfd0c33d
      rl@cse.unsw.edu.au authored
      We want -Odph to be a dynamic flag and that should imply -fno-method-sharing.
      This doesn't add a lot of complexity.
      bfd0c33d
Loading