Let's also support the easy/easier case: constant trip counts :)
And while I was at it, a minor optimisation: I don't think we need to run Cleanup when there are no NewPredicates; it wasn't doing anything other than iterating over empty sets, but thought not calling it all was more obvious; I had to move the initialisation of ClonedVCTPInExitBlock for that.
Doesn't look like you need ICmp or Shuffle here.