summaryrefslogtreecommitdiff
path: root/compiler/GHC/Cmm/Parser.y
diff options
context:
space:
mode:
authorLuite Stegeman <stegeman@gmail.com>2021-03-30 04:06:59 +0200
committerMarge Bot <ben+marge-bot@smart-cactus.org>2021-05-29 05:04:39 -0400
commit28e0dca2e93dabee88f28ce38282dbcb8c62ab99 (patch)
tree1bfb0bfd0478315c0366b252d273d25d170f85ff /compiler/GHC/Cmm/Parser.y
parent5ae070f168ba7f9679b045ea4b8f30917f47f800 (diff)
downloadhaskell-28e0dca2e93dabee88f28ce38282dbcb8c62ab99.tar.gz
Work around LLVM backend overlapping register limitations
The stg_ctoi_t and stg_ret_t procedures which convert unboxed tuples between the bytecode an native calling convention were causing a panic when using the LLVM backend. Fixes #19591
Diffstat (limited to 'compiler/GHC/Cmm/Parser.y')
-rw-r--r--compiler/GHC/Cmm/Parser.y3
1 files changed, 3 insertions, 0 deletions
diff --git a/compiler/GHC/Cmm/Parser.y b/compiler/GHC/Cmm/Parser.y
index d182a6f714..490a3c4976 100644
--- a/compiler/GHC/Cmm/Parser.y
+++ b/compiler/GHC/Cmm/Parser.y
@@ -1151,6 +1151,9 @@ stmtMacros = listToUFM [
( fsLit "SAVE_REGS", \[] -> emitSaveRegs ),
( fsLit "RESTORE_REGS", \[] -> emitRestoreRegs ),
+ ( fsLit "PUSH_TUPLE_REGS", \[live_regs] -> emitPushTupleRegs live_regs ),
+ ( fsLit "POP_TUPLE_REGS", \[live_regs] -> emitPopTupleRegs live_regs ),
+
( fsLit "LDV_ENTER", \[e] -> ldvEnter e ),
( fsLit "LDV_RECORD_CREATE", \[e] -> ldvRecordCreate e ),