remove-unused

Stephen Weeks MLton@sourcelight.com
Fri, 26 Oct 2001 10:54:08 -0700


I am confused by the code in remove-unused.  I don't understand what
"doesTerminate" means.  You sometimes seem to use it to mean "must
terminate" and other times to mean "may terminate".  Which is it?

As evidence, I point to the fact that if a function contains a Return
statement, it is marked as "doesTerminate".  This corresponds to "may
terminate".  

But, in translating calls you eliminate a call if it does not side
effect, does not raise, and doesTerminate.  To me, this requires
the "must terminate" interpretation, and therefore seems wrong.

Clarification?