Multiple fixes / improvements for LLVM backend
- 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 (cherry picked from commit adcb5fb4)
Showing
- compiler/llvmGen/Llvm/Types.hs 1 addition, 1 deletioncompiler/llvmGen/Llvm/Types.hs
- compiler/llvmGen/LlvmCodeGen/Base.hs 53 additions, 9 deletionscompiler/llvmGen/LlvmCodeGen/Base.hs
- compiler/llvmGen/LlvmCodeGen/CodeGen.hs 11 additions, 49 deletionscompiler/llvmGen/LlvmCodeGen/CodeGen.hs
- llvm-passes 1 addition, 1 deletionllvm-passes
- testsuite/tests/codeGen/should_run/all.T 1 addition, 2 deletionstestsuite/tests/codeGen/should_run/all.T
Loading
Please register or sign in to comment