diff options
Diffstat (limited to 'compiler')
| -rw-r--r-- | compiler/vectorise/Vectorise/Exp.hs | 8 | 
1 files changed, 6 insertions, 2 deletions
| diff --git a/compiler/vectorise/Vectorise/Exp.hs b/compiler/vectorise/Vectorise/Exp.hs index d00b040726..4e07086fd8 100644 --- a/compiler/vectorise/Vectorise/Exp.hs +++ b/compiler/vectorise/Vectorise/Exp.hs @@ -203,7 +203,11 @@ vectScalarLam args body      is_scalar vs (Var v)     = v `elemVarSet` vs      is_scalar _ e@(Lit _)    = is_scalar_ty $ exprType e -    is_scalar vs (App e1 e2) = is_scalar vs e1 && is_scalar vs e2 +     +    is_scalar _ (App (Var v) (Lit lit))  +       | Just con <- isDataConId_maybe v = con `elem` [intDataCon, floatDataCon, doubleDataCon] + +    is_scalar vs (App e1 e2) = is_scalar vs e1 && is_scalar vs e2          is_scalar vs (Let (NonRec b letExpr) body)                                = is_scalar vs letExpr && is_scalar (extendVarSet vs b) body      is_scalar vs (Let (Rec bnds) body)  @@ -214,7 +218,7 @@ vectScalarLam args body  	                           in is_scalar_ty ty &&                                    is_scalar vs' e   &&                                    (all (is_scalar_alt vs') alts) - +                                          is_scalar _ e            = False      is_scalar_alt vs (_, bs, e)  | 
