The
Inliner
class implements a visitor over the code that inlines calls to known subroutines. This produces code that is free of calls to the subroutines declared within the architecture description and therefore is ready for constant and copy propagation optimizations.
The
Inliner
will aggressively inline all calls, therefore it cannot detect recursion. It assumes that return statements are at the end of subroutines and do not occur in branches. This is not enforced by any checking, which should be done in the future.
@author Ben L. Titzer