This fixes a bug in tryOptArithImmedIntegerCompare.
It is unsafe to update the predicate on a MachineOperand when optimizing a G_ICMP, because it may be used in more than one place.
For example, when we are optimizing G_SELECT, we allow compares which are used in more than one G_SELECT. If we modify the G_ICMP, then we'll break one of the G_SELECTs.
Since the compare is being produced to either
- Select a G_ICMP
- Fold a G_ICMP into an instruction when profitable
there's no reason to actually modify it. The change is local to the specific compare.
Instead, pass a CmpInst::Predicate to tryOptArithImmedIntegerCompare which can be modified by reference.
Please fix this comment as discussed.