The Arm peephole optimiser code keeps track of both an MI and a SubAdd that can be
used to optimise away a CMP. In the rare case that both are found and not ruled-out as
valid, we could end up setting the flags on the wrong one.
Instead make sure we are using SubAdd if it exists, as it will be closer to the CMP.
The testcase here is a little theoretical, with a dead def of cpsr. It should hopefully show
the point.
You've already put it in quotes, but perhaps you can describe closer a bit better.