> So while trapping variants can certainly be introduced it looks like > this task may be more difficult.
I don't think you need to introduce trapping tree codes. You can introduce them directly in the front-end as s = x +nv y (((s ^ x) & (s ^ y)) < 0) ? trap () : s d = x -nv y (((d ^ x) & (x ^ y)) < 0) ? trap () : d (b == INT_MIN ? trap () : -nv b) (int)((long long) a * (long long) b) == a *nv b ? trap () : a *nv b Making sure they are compiled efficiently is another story, but especially for the sake of LTO I think this is the way to go. Paolo