After ConstantRecordPropagation and CopyPropagation, the next step is to unfold function calls, in order to propagate constants inside the bodies of functions as well. For this purpose the CopyPropagation transformation should be extended along the way of the function inliner described in the
chapter on dynamic rules. This requires declaring dynamic inlining rules at the declaration site of functions, and applying these rules at
the call sites. Extend the CopyPropagation traversal appropriately.
What criteria do you apply to decide whether to unfold a call or not? Given these criteria can you guarantee that the partial evaluator always
terminates, or that it evaluates as much as possible?
-- EelcoVisser - 11 Feb 2003