[don't create 'done' labels when local functions are just going to return anyway.
John Meacham <john@repetae.net>**20070522052825] hunk ./C/FromGrin2.hs 218
-    return (ss & goto done & mconcat (intersperse (goto done) rs) & label done);
+    todo <- asks rTodo
+    case todo of
+        TodoReturn -> return (ss & mconcat rs);
+        _ -> return (ss & goto done & mconcat (intersperse (goto done) rs) & label done);