------- Additional Comments From law at redhat dot com 2005-07-27 17:13 ------- It's highly unlikely threading is going to be able to completely eliminate the test for bytes == 0.
The fundamental problem is the threader has no way of knowing that the loop exit test (toread != 0) can never be true if bytes == 0. Now there is a missed threading opportunity in this code, when bytes <= 0, but ! (bytes < 0) we exit the loop via a break statement. Clearly when we exit the loop via that break statement, we need not test bytes == 0 again outside the loop. It's also the case that the test bytes < 0 can and should be simplified into bytes != 0. In fact, if VRP is enhanced to perform that simplification, then we do thread the loop exit via the break statement. jeff -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21559