diff options
author | Ben Gamari <ben@smart-cactus.org> | 2020-08-05 19:24:10 -0400 |
---|---|---|
committer | Marge Bot <ben+marge-bot@smart-cactus.org> | 2020-08-07 08:35:21 -0400 |
commit | 15b36de030ecdd60897bc7a6a02bdeabd0825be4 (patch) | |
tree | 6d1eb105b0b14840dfa133882d63f105408bf10b /compiler/GHC/Cmm | |
parent | 6402c1240d5bd768b8fe8b4368413932bedbe107 (diff) | |
download | haskell-15b36de030ecdd60897bc7a6a02bdeabd0825be4.tar.gz |
nativeGen: One approach to fix #18527
Previously the code generator could produce corrupt C call sequences due
to register overlap between MachOp lowerings and the platform's calling
convention. We fix this using a hack described in Note [Evaluate C-call
arguments before placing in destination registers].
Diffstat (limited to 'compiler/GHC/Cmm')
-rw-r--r-- | compiler/GHC/Cmm/MachOp.hs | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/compiler/GHC/Cmm/MachOp.hs b/compiler/GHC/Cmm/MachOp.hs index 077f663161..558cb13a7e 100644 --- a/compiler/GHC/Cmm/MachOp.hs +++ b/compiler/GHC/Cmm/MachOp.hs @@ -45,6 +45,9 @@ native code generators to handle. Most operations are parameterised by the 'Width' that they operate on. Some operations have separate signed and unsigned versions, and float and integer versions. + +Note that there are variety of places in the native code generator where we +assume that the code produced for a MachOp does not introduce new blocks. -} data MachOp |