The motivating example is this
for (j = n; j > 1; j = i) { i = j / 2; }
The signed division is safely to be changed to an unsigned division (j is known to be larger than 1 from the loop guard) and later turned into a shift. LLVM currently cannot figure it out and translates the division into at least 3 instructions.
minor: propagated is the wrong word. Possibly: "converted to udiv"