1. 07 Nov, 2018 1 commit
  2. 05 Oct, 2018 1 commit
    • Kavon Farvardin's avatar
      Multiple fixes / improvements for LLVM backend · adcb5fb4
      Kavon Farvardin authored
      - Fix for #13904 -- stop "trashing" callee-saved registers, since it is
        not actually doing anything useful.
      - Fix for #14251 -- fixes the calling convention for functions passing
        raw SSE-register values by adding padding as needed to get the values
        in the right registers. This problem cropped up when some args were
        unused an dropped from the live list.
      - Fixed a typo in 'readnone' attribute
      - Added 'lower-expect' pass to level 0 LLVM optimization passes to
        improve block layout in LLVM for stack checks, etc.
      Test Plan: `make test WAYS=optllvm` and `make test WAYS=llvm`
      Reviewers: bgamari, simonmar, angerman
      Reviewed By: angerman
      Subscribers: rwbarton, carter
      GHC Trac Issues: #13904, #14251
      Differential Revision: https://phabricator.haskell.org/D5190
  3. 30 May, 2018 1 commit
    • Kavon Farvardin's avatar
      Extract hard-coded LLVM opt flags into a file · a4ae199c
      Kavon Farvardin authored
      To resolve ticket #11295, I think it makes sense to stop hard-coding
      the pass sequences used by GHC when compiling with LLVM into the
      This patchset introduces a companion to the existing `llvm-targets` file
      called `llvm-passes`. The passes file is a simple association list that
      holds the default LLVM `opt` pass sequence used by GHC. This allows end
      users to easily save their favorite optimization flags when compiling
      with LLVM.
      The main benefit for ticket #11295 is that when adding a custom pass
      sequence, it tends to be an extremely long string that would be
      unsightly in the code.
      This is essentially part 1 of 2 for ticket #11295.
      Test Plan: ./validate
      Reviewers: bgamari, angerman
      Reviewed By: angerman
      Subscribers: rwbarton, thomie, carter
      Differential Revision: https://phabricator.haskell.org/D4695