This introduces the IRInstructionMapper, and the associated wrapper for instructions, IRInstructionData, that maps IR level Instructions to unsigned integers.
Mapping is done mainly by using the "isSameOperationAs" comparison between two instructions. If they return true, the opcode, result type, and operand types of the instruction are used to hash the instruction with an unsigned integer. The mapper accepts instruction ranges, and adds each resulting integer to a list, and each wrapped instruction to a separate list.
At present, branches, phi nodes are not mapping and exception handling is illegal. Debug instructions are not considered.
The different mapping schemes are tested in unittests/Analysis/IRSimilarityIdentifierTest.cpp
Can you add \code and \endcode around these?