1. 02 Apr, 2011 3 commits
  2. 01 Apr, 2011 7 commits
  3. 31 Mar, 2011 8 commits
  4. 30 Mar, 2011 4 commits
  5. 29 Mar, 2011 5 commits
  6. 28 Mar, 2011 1 commit
  7. 29 Mar, 2011 1 commit
  8. 27 Mar, 2011 2 commits
  9. 26 Mar, 2011 1 commit
  10. 25 Mar, 2011 4 commits
    • Ian Lynagh's avatar
    • Simon Marlow's avatar
      Fix #4914 (I hope) · 9c583846
      Simon Marlow authored
      Here's a bit of erroneous code:
      00000c5c <s1ad_info>:
           c5c:       8b 45 08                mov    0x8(%ebp),%eax
           c5f:       d9 46 03                flds   0x3(%esi)
           c62:       dd d9                   fstp   %st(1)
           c64:       d9 55 08                fsts   0x8(%ebp)
           c67:       89 c6                   mov    %eax,%esi
           c69:       c7 45 00 24 0c 00 00    movl   $0xc24,0x0(%ebp)
           c70:       f7 c6 03 00 00 00       test   $0x3,%esi
           c76:       75 ac                   jne    c24 <s1ac_info>
      So we should be doing some ffrees before the jne.  The code that
      inserts the ffrees wasn't expecting to do it for a conditional jump,
      because they are usually local, but we have a late optimisation that
      shortcuts jumps-to-jumps, and that can result in a non-local
      conditional jump.
      This at least fixes an instance of the bug that I was able to
      reproduce, let's hope there aren't any more.
    • Edward Z. Yang's avatar
      Ignore comments when inlining. · bf5882d2
      Edward Z. Yang authored
    • simonpj@microsoft.com's avatar
  11. 22 Mar, 2011 2 commits
    • Edward Z. Yang's avatar
      Split out "Raw Cmm" dump to its own flag -ddump-raw-cmm · 419821c7
      Edward Z. Yang authored
      Previously, -ddump-cmmz was used to dump out the "Raw Cmm" right
      before it gets passed to the backends, as well as all of the
      intermediate phases in the new code generator.  Unfortunately,
      there are a lot of intermediate phases, which means -ddump-cmmz
      takes a very long time with -fnew-codegen for large programs,
      even if you're only interested in the final result.
      Here we split up -ddump-cmmz into -ddump-cmmz (now exclusively for
      the new code generator) and -ddump-raw-cmm (for both code generation
      paths.) The old flag was not documented in the manual, so hopefully
      not too many people will be surprised by this change.
    • Edward Z. Yang's avatar
  12. 23 Mar, 2011 1 commit
    • Edward Z. Yang's avatar
      Immediately tag initialization code to prevent untagged spills. · cb5260d4
      Edward Z. Yang authored
      When allocating new objects on the heap, we previously returned
      a CmmExpr containing the heap pointer as well as the tag expression,
      which would be added to the code graph upon first usage.  Unfortunately,
      this meant that untagged heap pointers living in registers might
      be spilled to the stack, where they interacted poorly with garbage
      collection (we saw this bug specifically with the compacting garbage
      This fix immediately tags the register containing the heap pointer,
      so that unless we have extremely unfriendly spill code, the new pointer
      will never be spilled to the stack untagged.
      An alternate solution might have been to modify allocDynClosure to
      tag the pointer upon the initial register allocation, but not all
      invocations of allocDynClosure tag the resulting pointer, and
      threading the consequent CgIdInfo for the cases that did would have
      been annoying.
  13. 21 Mar, 2011 1 commit