https://gcc.gnu.org/bugzilla/show_bug.cgi?id=105480
--- Comment #1 from seberg <sebastian-gcc at sipsolutions dot net> --- Actually, I think I likely misanalyzed, the actual code in question where I found this was doing something like: while (n--) { if (isnan(*input)) { *out = 1; } else { *out = (long)(*input) } } So probably it is rather the branch that gets optimized away. I will try to post a better example.