Dropping SmallVector(const iterator_range<RangeTy>&) requires lot of adjustment to make change well-formed since iterator_range constructor is used in hundred of files.
That's because iterator_range is returned by commonly used functions like predecessors/successors, args, operands and other one.
I'm pushing to Phabricator just small part of change as WIP since I'm not sure if this is right direction you really want.
Depends on: https://reviews.llvm.org/D129781 and address comment: https://reviews.llvm.org/D129781#3655571
Would it be better to use auto in places like this?