From 70bafefbfc5fc31d5fad3184fc9bdc623871923b Mon Sep 17 00:00:00 2001 From: nineonine Date: Thu, 17 Feb 2022 00:01:44 -0800 Subject: 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. --- compiler/GHC/StgToByteCode.hs | 3 +++ compiler/GHC/StgToCmm/ArgRep.hs | 1 + 2 files changed, 4 insertions(+) (limited to 'compiler') 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 -- cgit v1.2.1