This is modeled on D20414 which added this support to global objects,
but not instructions. Note D67626 later refactored these interfaces
into the Value base class, but Instruction does not use this directly
because of special handling needed for the DbgLoc metadata.
I'm adding the support to instructions because it may be needed for
profile guided heap optimization
(https://lists.llvm.org/pipermail/llvm-dev/2020-June/142744.html)
depending on how that profile data is represented in the IR, as a
single allocation call may contain multiple heap profiles for
different contexts, and because it is an inconsistency in IR support
(the LLVM langref does not specify anything with regards to this
behavior).
I've added a generic Assembler test change similar to what was done
in D20414, but also augmented a branch-weight test to validate the
change made to BitcodeReader.cpp.
What happens if there are multiple? Assert, return first, return arbitrary, or return nullptr?