vectScalarLam args body
= do scalars <- globalScalars
- onlyIfV (all is_scalar_ty arg_tys
- && is_scalar_ty res_ty
+ onlyIfV (all is_prim_ty arg_tys
+ && is_prim_ty res_ty
&& is_scalar (extendVarSetList scalars args) body
&& uses scalars body)
$ do
is_scalar vs e@(Case eC eId ty alts)
= let vs' = extendVarSet vs eId
in -- pprTrace "is_scalar Case" (ppr e) $
- cantbe_parr_expr e
+ cantbe_parr_expr e &&
is_prim_ty ty &&
is_scalar vs' eC &&
(all (is_scalar_alt vs') alts)