+newUniqueLocalId :: Id -> UniqSM Id
+newUniqueLocalId i =
+ getUnique `thenUs` \ uniq ->
+ returnUs (mkIdWithNewUniq i uniq)
+
+newLocalIds :: StgEnv -> Bool -> [Id] -> UniqSM ([Id], StgEnv)
+newLocalIds env maybe_visible [] = returnUs ([], env)
+newLocalIds env maybe_visible (i:is)
+ | maybe_visible && externallyVisibleId i =
+ newLocalIds env maybe_visible is `thenUs` \ (is', env') ->
+ returnUs (i:is', env')
+ | otherwise =
+ newUniqueLocalId i `thenUs` \ i' ->
+ let
+ new_env = addOneToIdEnv env i (StgVarArg i')
+ in
+ newLocalIds new_env maybe_visible is `thenUs` \ (is', env') ->
+ returnUs (i':is', env')
+\end{code}
+
+
+\begin{code}