lowerUpdate
  (Let pat _ (PrimOp (SubExp (Var v))))
  [DesiredUpdate bindee_nm bindee_attr cs src is val]
  | patternNames pat == [src] =
    Just $ return [mkLet [] [(Ident bindee_nm $ typeOf bindee_attr,
                              BindInPlace cs v is)] $
                   PrimOp $ SubExp $ Var val]
lowerUpdate
  (Let pat _ (PrimOp (SubExp (Var v))))
  [DesiredUpdate bindee_nm bindee_attr cs src is val]
  | patternNames pat == [src] =
    Just $ return [mkLet [] [(Ident bindee_nm $ typeOf bindee_attr,
                              BindInPlace cs v is)] $
                   PrimOp $ SubExp $ Var val]
lowerUpdate
  (Let pat _ (PrimOp (SubExp (Var v))))
  [DesiredUpdate bindee_nm bindee_attr cs src is val]
  | patternNames pat == [src] =
    Just $ return [mkLet [] [(Ident bindee_nm $ typeOf bindee_attr,
                              BindInPlace cs v is)] $
                   PrimOp $ SubExp $ Var val]