THIS IS A WORK IN PROGRESS.
Putting this up for early review.
This pass is an improvement of the current shrink-wrapping pass, based, this time, on the dataflow analysis described in "Minimizing Register Usage Penalty at Procedure Calls - Fred C. Chow" [1]. The aim of this improvement is to remove the restriction that the current shrink-wrapping pass is having, which is having only one save / restore point.
Looks like this change is not needed (anymore?). I only see usage of MachineBasicBlock*