From 5ac946878d18294ff30e3d9cf152c678c667e37b Mon Sep 17 00:00:00 2001 From: Roman Leshchinskiy Date: Thu, 11 Sep 2008 05:43:33 +0000 Subject: [PATCH] Don't panic on non-vectorisable expressions --- compiler/vectorise/VectMonad.hs | 3 ++- compiler/vectorise/VectType.hs | 2 +- compiler/vectorise/Vectorise.hs | 10 +++------- 3 files changed, 6 insertions(+), 9 deletions(-) diff --git a/compiler/vectorise/VectMonad.hs b/compiler/vectorise/VectMonad.hs index 7a25c8d..ecbc7d9 100644 --- a/compiler/vectorise/VectMonad.hs +++ b/compiler/vectorise/VectMonad.hs @@ -2,7 +2,8 @@ module VectMonad ( Scope(..), VM, - noV, tryV, maybeV, traceMaybeV, orElseV, fixV, localV, closedV, initV, + noV, traceNoV, tryV, maybeV, traceMaybeV, orElseV, fixV, localV, closedV, + initV, liftDs, cloneName, cloneId, cloneVar, newExportedVar, newLocalVar, newDummyVar, newTyVar, diff --git a/compiler/vectorise/VectType.hs b/compiler/vectorise/VectType.hs index 53c8a61..ae77d05 100644 --- a/compiler/vectorise/VectType.hs +++ b/compiler/vectorise/VectType.hs @@ -86,7 +86,7 @@ vectType ty@(ForAllTy _ _) where (tyvars, mono_ty) = splitForAllTys ty -vectType ty = pprPanic "vectType:" (ppr ty) +vectType ty = traceNoV "vectType: can't vectorise" (ppr ty) vectAndBoxType :: Type -> VM Type vectAndBoxType ty = vectType ty >>= boxType diff --git a/compiler/vectorise/Vectorise.hs b/compiler/vectorise/Vectorise.hs index fb76430..1c8e19c 100644 --- a/compiler/vectorise/Vectorise.hs +++ b/compiler/vectorise/Vectorise.hs @@ -250,9 +250,6 @@ vectExpr (_, AnnCase scrut bndr ty alts) where scrut_ty = exprType (deAnnotate scrut) -vectExpr (_, AnnCase _ _ _ _) - = panic "vectExpr: case" - vectExpr (_, AnnLet (AnnNonRec bndr rhs) body) = do vrhs <- localV . inBind bndr $ vectPolyExpr rhs @@ -274,12 +271,11 @@ vectExpr (_, AnnLet (AnnRec bs) body) $ vectExpr rhs vectExpr e@(fvs, AnnLam bndr _) - | not (isId bndr) = pprPanic "vectExpr" (ppr $ deAnnotate e) - | otherwise = vectLam fvs bs body + | isId bndr = vectLam fvs bs body where (bs,body) = collectAnnValBinders e -vectExpr e = pprPanic "vectExpr" (ppr $ deAnnotate e) +vectExpr e = traceNoV "vectExpr: can't vectorise" (ppr $ deAnnotate e) vectLam :: VarSet -> [Var] -> CoreExprWithFVs -> VM VExpr vectLam fvs bs body @@ -302,7 +298,7 @@ vectLam fvs bs body vectTyAppExpr :: CoreExprWithFVs -> [Type] -> VM VExpr vectTyAppExpr (_, AnnVar v) tys = vectPolyVar v tys -vectTyAppExpr e _ = pprPanic "vectTyAppExpr" (ppr $ deAnnotate e) +vectTyAppExpr e _ = traceNoV "vectTyAppExpr: can't vectorise" (ppr $ deAnnotate e) -- We convert -- -- 1.7.10.4