In the following example:
the loop-local starts as an int when just a local but is widened to a long in the recur. It should be possible to retain the primitive int (or alternately float) type on the recur, rather than widening to long (or double).
The compiler code that is promoting the int seems to be:
Proposed: remove useless widening on loop bindings
Prescreening comments: My main question here is: do we want to support primitive int/float loop vars?