LLVM Programmer’s Manual strongly discourages the use of std::vector<bool> and suggests llvm::BitVector as a possible replacement.
Currently, some users of std::vector<bool> cannot switch to llvm::BitVector because it doesn't support range-based for loops. (Note: BitVector currently only provides iterator over set bits.)
To enable easy transition of std::vector<bool> users, this patch implements llvm::BitVector::begin() and llvm::BitVector::end().
Depends on D117115.
It'd probably be easiest to use iterator_facade_base (from ADT/Iterator.h IIRC?). Value type should be const bool here.