1. 10 Apr, 2003 1 commit
  2. 31 Mar, 2003 1 commit
  3. 11 Dec, 2002 1 commit
    • simonmar's avatar
      [project @ 2002-12-11 15:36:20 by simonmar] · 0bffc410
      simonmar authored
      Merge the eval-apply-branch on to the HEAD
      This is a change to GHC's evaluation model in order to ultimately make
      GHC more portable and to reduce complexity in some areas.
      At some point we'll update the commentary to describe the new state of
      the RTS.  Pending that, the highlights of this change are:
        - No more Su.  The Su register is gone, update frames are one
          word smaller.
        - Slow-entry points and arg checks are gone.  Unknown function calls
          are handled by automatically-generated RTS entry points (AutoApply.hc,
          generated by the program in utils/genapply).
        - The stack layout is stricter: there are no "pending arguments" on
          the stack any more, the stack is always strictly a sequence of
          stack frames.
          This means that there's no need for LOOKS_LIKE_GHC_INFO() or
          LOOKS_LIKE_STATIC_CLOSURE() any more, and GHC doesn't need to know
          how to find the boundary between the text and data segments (BIG WIN!).
        - A couple of nasty hacks in the mangler caused by the neet to
          identify closure ptrs vs. info tables have gone away.
        - Info tables are a bit more complicated.  See InfoTables.h for the
        - As a side effect, GHCi can now deal with polymorphic seq.  Some bugs
          in GHCi which affected primitives and unboxed tuples are now
        - Binary sizes are reduced by about 7% on x86.  Performance is roughly
          similar, some programs get faster while some get slower.  I've seen
          GHCi perform worse on some examples, but haven't investigated
          further yet (GHCi performance *should* be about the same or better
          in theory).
        - Internally the code generator is rather better organised.  I've moved
          info-table generation from the NCG into the main codeGen where it is
          shared with the C back-end; info tables are now emitted as arrays
          of words in both back-ends.  The NCG is one step closer to being able
          to support profiling.
      This has all been fairly thoroughly tested, but no doubt I've messed
      up the commit in some way.
  4. 08 Dec, 2002 1 commit
  5. 22 Oct, 2002 1 commit
  6. 25 Sep, 2002 2 commits
  7. 23 Sep, 2002 1 commit
  8. 10 Sep, 2002 1 commit
  9. 03 Sep, 2002 1 commit
    • simonmar's avatar
      [project @ 2002-09-03 14:39:06 by simonmar] · b7a0fd6f
      simonmar authored
      Just hit a problem caused by gcc 3.1+: it uses instructions like
      	movl %esi, 4(%esp)
      in the prologue, which the mangler wasn't expecting.  This might fix
      problems that other people have been seeing with gcc 3.1 on x86.
  10. 28 Aug, 2002 1 commit
    • ken's avatar
      [project @ 2002-08-28 19:28:02 by ken] · c994c0e7
      ken authored
      Further mangler changes to get ghc working with gcc 3.04 on the Alpha.
      Jeff Lewis: "The compiler was sometimes emitting the $..ng label for a symbol
      before the regular label.  This really confused the mangler, and it completely
      scrambled the file."
  11. 27 Aug, 2002 1 commit
    • simonmar's avatar
      [project @ 2002-08-27 09:12:53 by simonmar] · b669d6d9
      simonmar authored
      Replace "Funny global thing" with a better error message, as suggested
      by Alastair Reid.  The message is:
        Warning: retaining unknown function `$_' in output from C compiler
      ("unknown function" is a bit vague, but I couldn't come up with an
      alternative that wasn't misleading).
  12. 21 Aug, 2002 1 commit
    • ken's avatar
      [project @ 2002-08-21 22:06:02 by ken] · 5c553db9
      ken authored
      Use __DISCARD__ to prevent overly aggressive optimization by certain
      gcc versions on the Alpha.  Thanks to Jeffrey Lewis!
  13. 16 Jul, 2002 3 commits
    • simonmar's avatar
      [project @ 2002-07-16 12:05:37 by simonmar] · 2db30d06
      simonmar authored
      un-rot one transformation on x86: we normally transform
      	movl $_blah, %eax
      	jmp  *%eax
      into simply
      	jmp _blah
      but the pattern had rotted w.r.t. gcc so this was no longer applying.
      Should reduce code size measurably.
    • simonmar's avatar
      [project @ 2002-07-16 10:51:12 by simonmar] · 025f5dfe
      simonmar authored
      The restore instruction on Sparc apparently has arguments under GCC
      3.1, which caused one of the patterns to break in the mangler.
      I can now run simple programs compiled with GHC on Sparc using GCC
      3.1, so hopefully this fixes it.
      MERGE TO STABLE (and the previous one).
    • simonmar's avatar
      [project @ 2002-07-16 10:17:37 by simonmar] · 2011da8d
      simonmar authored
      GCC 3.1 on Sparc now uses '.long'.
  14. 12 Jun, 2002 1 commit
  15. 09 Jun, 2002 1 commit
  16. 07 Jun, 2002 1 commit
  17. 03 Jun, 2002 1 commit
    • matthewc's avatar
      [project @ 2002-06-03 13:08:37 by matthewc] · cb5ccf0a
      matthewc authored
      Initial mangling and tailcalls support for IA64.
      Function prologues and epilogues are deleted and we use a single register
      stack frame throughout (with a little register renaming in the mangler...)
      Dropthrough from fast to slow entry point is also implemented.
      Tailcalls are marked and converted into jumps at mangle time.
  18. 29 May, 2002 1 commit
    • simonmar's avatar
      [project @ 2002-05-29 13:44:18 by simonmar] · 1f1287d7
      simonmar authored
      gcc 3.1 broke the mangler again...  this time it seems gcc is adding
      spurious writes to the stack in the prologue, triggered perhaps by
      inline functions.  The code generated for uses of ASSIGN_DBL() and
      ASSIGN_INT64() is really terrible - we should really submit a bug
      report to the gcc folks for this one.
      Anyway, this patch should get us going again; we now toss the spurious
      instructions back into the main part of the code (just in case they
      happened to be there for a good reason).
  19. 28 May, 2002 1 commit
  20. 19 Apr, 2002 1 commit
  21. 26 Mar, 2002 1 commit
  22. 01 Mar, 2002 1 commit
  23. 12 Nov, 2001 1 commit
  24. 09 Nov, 2001 1 commit
    • sof's avatar
      [project @ 2001-11-09 20:30:11 by sof] · cb470321
      sof authored
      Make recent rts/ changes work by recognising symbols starting
      with __stg as being known-funny-things.
      Still recognise "^stg" as 'funny', not sure if that's still
  25. 26 Oct, 2001 1 commit
    • sewardj's avatar
      [project @ 2001-10-26 11:59:36 by sewardj] · d6af23ab
      sewardj authored
      merge from stable, revs:
       +4 -1      fptools/ghc/compiler/nativeGen/AbsCStixGen.lhs  +10 -0     fptools/ghc/driver/mangler/ghc-asm.lprl
        Place a zero word after each reversed vector table, so that the vtbl
        label is really in the section we would like to claim it is in.  This
        is needed for the GC to work correctly.  Fixes a GHCi segfault
        reported by Ryszard Kubiak.
       +7 -0      fptools/ghc/compiler/nativeGen/AbsCStixGen.lhs  +18 -0     fptools/ghc/driver/mangler/ghc-asm.lprl
        Add comments, much longer than the fix itself, giving explaination
        for yesterday's dummy-word-after-vtbl fix.
  26. 16 Oct, 2001 1 commit
  27. 25 Sep, 2001 1 commit
  28. 23 Sep, 2001 1 commit
  29. 22 Sep, 2001 1 commit
    • ken's avatar
      [project @ 2001-09-22 12:24:57 by ken] · 349de67a
      ken authored
      Alphas: The heroic Simon Marlow found a bug in the Digital UNIX
      assembler (!) wherein .quad constants inside .text sections are
      first narrowed to 32 bits then sign-extended back to 64 bits.
      This obviously screws up our 64-bit bitmaps, so we work around
      the bug by replacing .quad with .align 3 + .long + .long
  30. 04 Sep, 2001 1 commit
    • ken's avatar
      [project @ 2001-09-04 18:29:20 by ken] · fb7a723b
      ken authored
      Please say "make -C ghc/lib/std clean; make -C hslibs clean".
      This commit eliminates spurious warning messages when compiling on
      the Alpha.  There are two kinds of spurious warning messages:
      (1) gcc: -noprefix_recognition: linker input file unused since linking not done
          This warning is because we pass the flag "-Xlinker -noprefix_recognition"
          to gcc.  We remove this warning by no longer passing the flag to gcc,
          and by removing the reason we were passing the flag in the first place:
          __init_* is now renamed to __stginit_*.
      (2) .../includes/Regs.h: warning: call-clobbered register used for global
          register variable
          This warning and all other warnings except (1), we eliminate by
          passing the -w flag to gcc.
  31. 23 Jul, 2001 1 commit
  32. 22 Jul, 2001 1 commit
    • chak's avatar
      [project @ 2001-07-22 03:19:51 by chak] · 02f8658b
      chak authored
      Solaris system headers contain function definitions (not just prototypes) for
      some functions; eg, stat().  WDP decided to toss (some of) them out during
      mangling.  I think, this is wrong, as the list of these functions changes with
      varying Solaris releases and it makes foreign importing these functions more
      complicated; in particular, it broke Directory.hsc and PosixFiles on
  33. 25 May, 2001 3 commits
  34. 26 Mar, 2001 1 commit
  35. 07 Mar, 2001 1 commit
    • rrt's avatar
      [project @ 2001-03-07 10:27:43 by rrt] · fa4769e9
      rrt authored
      On mingwin, remove CRs from input file, to prevent problems when
      reading from unmounted partitions. (This shouldn't be a problem, but
      it is; this fix makes the mangler a bit more robust anyway.)