matchLinkerVeneer() returns 3 if Instruction and the last
two instructions in [Instructions.begin, Instructions.end())
match the pattern
ADRP x16, imm ADD x16, x16, imm BR x16
BinaryContext.cpp used to use
--Count; for (auto It = std::prev(Instructions.end()); Count != 0; It = std::prev(It), --Count) { ...use It... }
to walk these instructions. The first --Count skips the
instruction that's in Instruction instead of in Instructions.
The loop then walks over Instructions.
However, on the last iteration, this calls std::prev() on an
iterator that points at the container's begin(), which can blow
up.
Instead, use rbegin(), which sidesteps this issue.
Fixes test/AArch64/veneer-gold.s on a macOS host.
With this, check-bolt passes on macOS.