diff options
author | nineonine <mail4chemik@gmail.com> | 2022-02-17 00:01:44 -0800 |
---|---|---|
committer | Marge Bot <ben+marge-bot@smart-cactus.org> | 2022-02-24 20:25:42 -0500 |
commit | 70bafefbfc5fc31d5fad3184fc9bdc623871923b (patch) | |
tree | 05110e264743ef4fe0d3ff4347ccf32e0c6e9584 /compiler | |
parent | d0deaaf4241fa236bd8d87abde68a0ad41a7e119 (diff) | |
download | haskell-70bafefbfc5fc31d5fad3184fc9bdc623871923b.tar.gz |
ghci: show helpful error message when loading module with SIMD vector operations (#20214)
Previously, when trying to load module with SIMD vector operations, ghci would panic
in 'GHC.StgToByteCode.findPushSeq'. Now, a more helpful message is displayed.
Diffstat (limited to 'compiler')
-rw-r--r-- | compiler/GHC/StgToByteCode.hs | 3 | ||||
-rw-r--r-- | compiler/GHC/StgToCmm/ArgRep.hs | 1 |
2 files changed, 4 insertions, 0 deletions
diff --git a/compiler/GHC/StgToByteCode.hs b/compiler/GHC/StgToByteCode.hs index 885af12944..a5931c2dd6 100644 --- a/compiler/GHC/StgToByteCode.hs +++ b/compiler/GHC/StgToByteCode.hs @@ -784,6 +784,9 @@ findPushSeq (D: rest) = (PUSH_APPLY_D, 1, rest) findPushSeq (L: rest) = (PUSH_APPLY_L, 1, rest) +findPushSeq argReps + | any (`elem` [V16, V32, V64]) argReps + = sorry "SIMD vector operations are not available in GHCi" findPushSeq _ = panic "GHC.StgToByteCode.findPushSeq" diff --git a/compiler/GHC/StgToCmm/ArgRep.hs b/compiler/GHC/StgToCmm/ArgRep.hs index cc618a16ed..9db0ed7afc 100644 --- a/compiler/GHC/StgToCmm/ArgRep.hs +++ b/compiler/GHC/StgToCmm/ArgRep.hs @@ -52,6 +52,7 @@ data ArgRep = P -- GC Ptr | V16 -- 16-byte (128-bit) vectors of Float/Double/Int8/Word32/etc. | V32 -- 32-byte (256-bit) vectors of Float/Double/Int8/Word32/etc. | V64 -- 64-byte (512-bit) vectors of Float/Double/Int8/Word32/etc. + deriving Eq instance Outputable ArgRep where ppr = text . argRepString argRepString :: ArgRep -> String |