If an instruction has several operands and a PC-relative one is not the first of them, the generator may produce the code that does not pass the Address parameter to the printout method. For example, for an Arm instruction LE LR, $imm, it reuses the same code as for other instructions where the second operand is not PC-relative:
void ARMInstPrinter::printInstruction(...) { ... case 11: // BF16VDOTI_VDOTD, BF16VDOTI_VDOTQ, BF16VDOTS_VDOTD, ... printOperand(MI, 1, STI, O); O << ", "; printOperand(MI, 2, STI, O); break; ...
The patch fixes that by considering PCRel when comparing AsmWriterOperand values.
%t.log => | FileCheck %s