Unfolding Function Calls

Pt
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

Testsuite

-- MartinBravenboer - 23 Feb 2003