1. 23 Jan, 2009 2 commits
  2. 26 Jan, 2009 1 commit
    • Simon Marlow's avatar
      Fix #2961: we lost some of the generated code for stack args in genCCall · ff124db4
      Simon Marlow authored
      A real bug in the x86_64 native code gen: nice!
      This bug would have been caught by -Wall, and I would have gone though
      and Walled this file but I know Ben is hacking on this file quite
      heavily and I don't want to create undue conflicts.  Ben: it would be
      nice to enable -Wall here when you have time.
  3. 21 Jan, 2009 4 commits
  4. 20 Jan, 2009 5 commits
  5. 15 Jan, 2009 2 commits
  6. 14 Jan, 2009 1 commit
  7. 12 Jan, 2009 1 commit
  8. 10 Jan, 2009 1 commit
  9. 14 Aug, 2008 1 commit
    • dias@eecs.harvard.edu's avatar
      Merging in the new codegen branch · 176fa33f
      dias@eecs.harvard.edu authored
      This merge does not turn on the new codegen (which only compiles
      a select few programs at this point),
      but it does introduce some changes to the old code generator.
      The high bits:
      1. The Rep Swamp patch is finally here.
         The highlight is that the representation of types at the
         machine level has changed.
         Consequently, this patch contains updates across several back ends.
      2. The new Stg -> Cmm path is here, although it appears to have a
         fair number of bugs lurking.
      3. Many improvements along the CmmCPSZ path, including:
         o stack layout
         o some code for infotables, half of which is right and half wrong
         o proc-point splitting
  10. 30 Jul, 2008 2 commits
  11. 22 Jul, 2008 1 commit
  12. 29 May, 2008 2 commits
    • dias@eecs.harvard.edu's avatar
      Replacing copyins and copyouts with data-movement instructions · 0d80489c
      dias@eecs.harvard.edu 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)
    • dias@eecs.harvard.edu's avatar
      Cmm back end upgrades · 25628e27
      dias@eecs.harvard.edu 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
  13. 03 May, 2008 2 commits
  14. 12 Apr, 2008 1 commit
  15. 29 Mar, 2008 1 commit
  16. 07 Feb, 2008 2 commits
    • Duncan Coutts's avatar
      Make more arch-specific #if's exclusive with #else #error cases · 1529e92a
      Duncan Coutts authored
      So when the next person compiles the Sparc NCG it should fail more
      obviously at compile time rather than panicing at runtime.
      Plus one obvious fix for LocalReg gaining an extra param
      Missing bits of Sparc NCG:
        * genSwitch for generating jump tables. This is the most tricky one.
          finding and verifying the values. The nearby comment describes how.
        * isRegRegMove and mkRegRegMoveInstr. Sparc uses Or for int move, check
          what this is supposed to do for single and double float types.
        * regDotColor. Probably just copy the ppc impl.
    • Simon Marlow's avatar
      remove a bogus assertion · a411ca6b
      Simon Marlow authored
  17. 13 Jan, 2008 1 commit
  18. 04 Jan, 2008 1 commit
  19. 03 Dec, 2007 1 commit
  20. 21 Sep, 2007 1 commit
  21. 12 Sep, 2007 1 commit
    • Clemens Fruhwirth's avatar
      Sign extension hack to work around PC64 relocation limitation for binutils <2.17 for x86_64. · b8a64b8e
      Clemens Fruhwirth authored
      binutils <2.17 can't generate PC64 relocations for x86_64. Hence we
      emit only 32 bit PC relative offsets, and artifically stick a zero in
      front of them to make them 64 bit (see PprMach.sh ppr_item in
      pprDataItem). This works as long as the offset is <32bit AND it's
      positive. This is not the case for offsets in jump tables, they are
      all negative. This hack sign extends them with a MOVSXL instruction
      into the dead index register, then adding the properly sign extended
      offset to the jump table base label giving the correct target address
      for the following jump.
  22. 07 Sep, 2007 1 commit
    • nr@eecs.harvard.edu's avatar
      a good deal of salutory renaming · fd8d0411
      nr@eecs.harvard.edu authored
      I've renamed a number of type and data constructors within Cmm so that
      the names used in the compiler may more closely reflect the C--
      specification 2.1.  I've done a bit of other renaming as well.
        CmmFormal and CmmActual now bear a CmmKind (which for now is a
                                                    MachHint as before)
        CmmFormals = [CmmFormal] and CmmActuals = [CmmActual]
        suitable changes have been made to both code and nonterminals in the
        Cmm parser (which is as yet untested)
        For reasons I don't understand, parts of the code generator use a
        sequence of 'formal parameters' with no C-- kinds.  For these we now
        have the types
          type CmmFormalWithoutKind   = LocalReg
          type CmmFormalsWithoutKinds = [CmmFormalWithoutKind]
        A great many appearances of (Tau, MachHint) have been simplified to
        the appropriate CmmFormal or CmmActual, though I'm sure there are
        more opportunities.
        Kind and its data constructors are now renamed to
           data GCKind = GCKindPtr | GCKindNonPtr 
        to avoid confusion with the Kind used in the type checker and with CmmKind.
      Finally, in a somewhat unrelated bit (and in honor of Simon PJ, who
      thought of the name), the Whalley/Davidson 'transaction limit' is now
      called 'OptimizationFuel' with the net effect that there are no longer
      two unrelated uses of the abbreviation 'tx'.
  23. 05 Sep, 2007 1 commit
    • nr@eecs.harvard.edu's avatar
      change of representation for GenCmm, GenCmmTop, CmmProc · 16dc208a
      nr@eecs.harvard.edu authored
      The type parameter to a C-- procedure now represents a control-flow
      graph, not a single instruction.  The newtype ListGraph preserves the 
      current representation while enabling other representations and a
      sensible way of prettyprinting.  Except for a few changes in the
      prettyprinter the new compiler binary should be bit-for-bit identical
      to the old.
  24. 04 Sep, 2007 1 commit
  25. 03 Sep, 2007 1 commit
  26. 01 Sep, 2007 1 commit
  27. 20 Aug, 2007 1 commit