------- Comment #10 from steven at gcc dot gnu dot org  2008-11-22 11:36 -------
Trunk today generates the following code (this is the final_cleanup dump):

;; Function foo (foo)

foo ()
{
  static char eof_reached = 0;
  int bytes;
  int toread;

<bb 2>:
  toread = 4096;

<bb 3>:
  bytes = bar (toread);
  if (bytes <= 0)
    goto <bb 4>;
  else
    goto <bb 5>;

<bb 4>:
  if (bytes != 0)
    goto <bb 6>;
  else
    goto <bb 7>;

<bb 5>:
  toread = toread - bytes;

<bb 6>:
  if (toread != 0)
    goto <bb 3>;
  else
    goto <bb 8>;

<bb 7>:
  eof_reached = 1;

<bb 8>:
  return;

}


Looks like we can't do any better than that -- can we??


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21559

Reply via email to