I can spend time on that later, once it's decided how to proceed.
As you wish, but I won't review that patch until it's reviewable.
Again, how to call it is another question. Important question is whether transform pass is better than creating separate paths in advance. Regarding names, having that closer to actual language elements seems easier to read, than NNEG.
I don't agree. Maybe `NON_NEGATIVE` is better than `NNEG`, but the fact that the difference between `TEXKILL` and `DISCARD` is how the condition is evaluated is quite opaque to me.
As for having a transform pass rather than immediately creating two different codes, I don't have strong feelings. As I already said, I think it is more consistent with what we already do for the conditional operator to initially create an `if` block, and later possibly raising it to `DISCARD` (or whatever of its variants). That's also what @Mystral suggested and possibly what @zfigura suggested saying that we don't want the same transformation in both directions. But I'll leave to them to stress their point of view if they so wish.