As you know (or may want to dispute for some reason, so let's
settle that first), operands without specified modes on matching
patterns are wild-card matches; not VOIDmode matches or a kind
of lesser-order matches.
(ISTR some change, at least some discussion, that label_refs now
should have modes, but if the change happened, the documentation
wasn't sufficiently updated. If so, the mode on the
"jump"-pattern above should be :SI, but when it's not specified,
it's a wild-card, so should still *match*. It could also be
that the :SI is put there in error, but still the pattern
recognition order observation is valid.)
It seems that since 4.3, some change now causes the generated
pattern-matching tree in insn-recog.c:recog to try the pattern
*with the specified mode* before (eventually, seemingly last)
the one with the unspecified-mode label_ref.
What I'll do next depends. Is there a reason to keep that
change (and document it) or should the bug just be fixed?