Skip to content
Snippets Groups Projects
  1. Feb 01, 2023
    • Matthew Pickering's avatar
      Bump supported LLVM range from 10 through 15 to 11 through 16 · 0cc16aaf
      Matthew Pickering authored and Marge Bot's avatar Marge Bot committed
      LLVM 15 turns on the new pass manager by default, which we have yet to
      migrate to so for new we pass the `-enable-new-pm-0` flag in our
      llvm-passes flag.
      
      LLVM 11 was the first version to support the `-enable-new-pm` flag so we
      bump the lowest supported version to 11.
      
      Our CI jobs are using LLVM 12 so they should continue to work despite
      this bump to the lower bound.
      
      Fixes #21936
      0cc16aaf
  2. Jan 20, 2020
  3. Nov 07, 2018
  4. Oct 05, 2018
    • Kavon Farvardin's avatar
      Multiple fixes / improvements for LLVM backend · adcb5fb4
      Kavon Farvardin authored and Ben Gamari's avatar Ben Gamari committed
      - 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
      adcb5fb4
  5. May 30, 2018
    • Kavon Farvardin's avatar
      Extract hard-coded LLVM opt flags into a file · a4ae199c
      Kavon Farvardin authored and Ben Gamari's avatar Ben Gamari committed
      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
      compiler
      itself.
      
      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
      a4ae199c
Loading