1. 28 Feb, 2000 5 commits
    • sewardj's avatar
      [project @ 2000-02-28 12:02:31 by sewardj] · 4070b105
      sewardj authored
      Many changes to improve the quality and correctness of generated code,
      both for x86 and all-platforms.  The intent is that the x86 NCG will
      now be good enough for general use.
      
      -- Add an almost-trivial Stix (generic) peephole optimiser, whose sole
         purpose is elide assignments to temporaries used only once, in the
         very next tree.  This generates substantially better code for
         conditionals on all platforms.  Enhance Stix constant folding to
         take advantage of the inlining.
      
         The inlining presents subsequent insn selection phases with more
         complex trees than would have previously been used to.  This has
         shown up several bugs in the x86 insn selectors, now fixed.
         (assumptions that data size is Word, when could be Byte,
          assumptions that an operand will always be in a temp reg, etc)
      
      -- x86: Use the FLDZ and FLD1 insns.
      
      -- x86: spill FP registers with 80-bit loads/stores so that
         Intel's extra 16 bits of accuracy are not lost.  If this isn't
         done, FP spills are not suitably transparent.  Increase the
         number of spill words available to 2048.
      
      -- x86: give the register allocator more flexibility in choosing
         spill temporaries.
      
      -- x86, RegAllocInfo.regUsage: fix error for GST, and rewrite to
         make it clearer.
      
      -- Correctly track movements in the C stack pointer, and generate
         correct spill code for archs which spill against the stack pointer
         even when the stack pointer moves.  Redo the x86 ccall mechanism
         to push args on the C stack in the normal way.  Rather than have
         the spiller have to analyse code sequences to determine the current
         stack offset, the insn selectors communicate the current offset
         whenever it changes by inserting a DELTA pseudo-insn.  Then the
         spiller only has to spot DELTAs.
      
         This means having a new native-code-generator monad (Stix.NatM)
         which carries both a UniqSupply and the current stack offset.
      
      -- Remove the asmPar/asmSeq ways of grouping insns together.
         In the presence of fixed registers, it is hard to demonstrate
         that insn selectors using asmPar always give correct code, and
         the extra complication doesn't help any.
      
         Also, directly construct code sequences using tree-based ordered
         lists (utils/OrdList.lhs) for linear-time appends, rather than
         the bizarrely complex method using fns and fn composition.
      
      -- Inline some hcats in printing of x86 address modes.
      
      -- Document more of the hidden assumptions which insn selection relies
         on, particular wrt addressing modes.
      4070b105
    • simonmar's avatar
      [project @ 2000-02-28 11:53:44 by simonmar] · e0e07f52
      simonmar authored
      oops, back out local patch that accidentally got committed with rev. 1.139.
      e0e07f52
    • simonmar's avatar
      [project @ 2000-02-28 10:57:44 by simonmar] · bbe3617e
      simonmar authored
      fix = vs. == in conditional
      bbe3617e
    • simonmar's avatar
      [project @ 2000-02-28 10:14:27 by simonmar] · 33fd067b
      simonmar authored
      document the -recomp option explicitly.
      33fd067b
    • simonmar's avatar
      [project @ 2000-02-28 09:17:54 by simonmar] · c5535e01
      simonmar authored
      'IPVARID :: type' moved from btype to type, to reduce conflicts.
      c5535e01
  2. 25 Feb, 2000 10 commits
  3. 24 Feb, 2000 8 commits
  4. 23 Feb, 2000 1 commit
    • lewie's avatar
      [project @ 2000-02-23 19:41:50 by lewie] · e87d56ce
      lewie authored
      Handle `with' more cleverly.  I was generating partially applied methods
      for the case where the `with' expression was also overloaded, but this
      was buggy, and completely unnecessary.  Instead, simply force the method
      binding at the point of the `with' expression (we reap no benefits from
      pushing the sharing further out anyway), and release the remainder of
      the method's context into the LIE.
      e87d56ce
  5. 22 Feb, 2000 3 commits
    • panne's avatar
      [project @ 2000-02-22 15:47:56 by panne] · b78eb7be
      panne authored
      Load deprecations from interface files into a deprecation environment
      which maps Names to RenamedDeprecations. This map is not used yet, but
      very soon it will...
      
      This commit fixes a bug related to implicit parameters, too:
      Previously, an interface file containing the name "with" could not be
      read by the interface parser. This broke Malcolm's HaXml 0.9 (released
      today). Remember Sven's glaexts-commandment (Jeffrey? :-) : Always
      keep Lex.lhs's ghcExtensionKeywordsFM and ParseIface.y's var_fs
      production in synch!
      b78eb7be
    • panne's avatar
      [project @ 2000-02-22 12:45:30 by panne] · c01dc71d
      panne authored
      Space leak paranoia: Don't keep whole InterfaceDetails alive
      throughout the middle part of the compiler
      c01dc71d
    • simonmar's avatar
      [project @ 2000-02-22 12:09:23 by simonmar] · b310c854
      simonmar authored
      Ignore SIGPIPE, since our I/O library handles EPIPE properly and
      SIGPIPE tends to cause the Haskell program to exit silently and
      mysteriously.
      
      Found-by: furiously pressing the refresh button in a browser connected
      to my Haskell web server :-)
      b310c854
  6. 21 Feb, 2000 3 commits
    • panne's avatar
      [project @ 2000-02-21 19:06:11 by panne] · 8486d65e
      panne authored
      Extended interface mangler with deprecations handling.
      
      NOTE: Whoever wrote this part of the driver without adding a HUGE
      warning in MkIface.lhs to keep both files in synch deserves the most
      severe punishment imaginable (huge stick, etc.)!  >:-(  The seemingly
      magical random rearrangement of the interface file outside Haskell's
      realm can drive you mad if you forget this...
      8486d65e
    • panne's avatar
      [project @ 2000-02-21 18:56:02 by panne] · 105fb636
      panne authored
      Fixed typo in deprecations parsing
      105fb636
    • panne's avatar
      [project @ 2000-02-21 18:55:19 by panne] · 3909a13c
      panne authored
      Write deprecations into interface files.
      3909a13c
  7. 20 Feb, 2000 1 commit
  8. 18 Feb, 2000 4 commits
  9. 17 Feb, 2000 4 commits
  10. 16 Feb, 2000 1 commit