optimization hints?

Mike Stump mrs@wrs.com
Fri Jun 11 10:34:00 GMT 1999


> Date: Fri, 11 Jun 1999 04:06:15 -0500 (EST)
> From: Alfred Perlstein <bright@rush.net>

> It has always seemed weird that C, the langue usually chosen because
> it's closeness to the machine level wouldn't have a hint like system
> for doing branches.

>     if ((ret = poll(pfds, num_pfds, INFTIM)) == -1)

> isn't it about time C developers had this kind of control over thier
> code?

Yes and no.  gcc is better off if in this one case, gcc developers can
tag `known' functions with expected results (or unexpected results as
the case may be), and let the optimizer use this to rearrange code.

For example, the simple rule that compares to -1 are usually false,
even as a general optimization rule, would go a long way to doing the
right thing in most C code I have seen.

The results one gets from that one general rule I feel would be better
than littering C code with attributes, pragma and the like.

Also note that you can get most of the benefit by using
-fbranch-probabilities, from the doc:

@item -fbranch-probabilities
After running a program compiled with @samp{-fprofile-arcs}
(@pxref{Debugging Options,, Options for Debugging Your Program or
@code{gcc}}), you can compile it a second time using
@samp{-fbranch-probabilities}, to improve optimizations based on
guessing the path a branch might take.

if your port doesn't yet support this, maybe you want to contribute
support for this?


More information about the Gcc mailing list