but (0:int + x)   would not do the same thing? What is special about using SUB instead
of ADD?


On Oct 17, 2014, at 12:07 PM, Charles Forsyth <charles.forsyth@gmail.com> wrote:


On 17 October 2014 18:48, Yoann Padioleau <pad@fb.com> wrote:
Somehow?

Would be nice to have a comment explaining this “somehow" then
because it looks tricky.

it's building a tree for (0:int-(0:int-x)) which later transformations will simplify to x, but having done "the usual arithmetic conversions"
balancing and promoting 0s and x as required, if it's char/int/long/vlong.