This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: -fno-guess-branch-probability switch...


On Sun, May 05, 2002 at 09:57:45PM -0500, Dave Fladebo wrote:
> 
> Great work to all - I just ran some benchmark stuff with gcc v3.0.4 against  
> VC++ v7.0 on the same (dual boot Linux / WinXP) box, and gcc generally comes 
> out on top.  Amazing!!!
> 
> What exactly does the following imply?
> 
> ---------------
> -fno-guess-branch-probability
> Sometimes gcc will opt to guess branch probabilities when none are
> available from either profile directed feedback (`-fprofile-arcs')
> or `__builtin_expect'.  In a hard real-time system, people don't
> want different runs of the compiler to produce code that has different
> behavior; minimizing non-determinism is of paramount import.  This
> switch allows users to reduce non-determinism, possibly at the expense
> of inferior optimization.
> ---------------
> 
> It almost sounds to me like the branch-prediction is being done "randomly" in 
> some cases, so that the exact same code may be compiled differently given the 
> exact same compiler options, etc...
> 
> That is NOT correct, right??? In other words, the following statement would be 
> true:
> 
> "Given the same source code and compiler switches, the gcc/g++ compiler will 
> produce the exact same binary code." 
> 
> Please advise.
> 
> Thanks!

Given the same source code, compiler switches, surrounding environment,
and profile data (if any), yes.  It can also depend on your host
machine's floating point precision (fixed in GCC 3.2).

I believe the option is just to make output a little more predictable.

-- 
Daniel Jacobowitz                           Carnegie Mellon University
MontaVista Software                         Debian GNU/Linux Developer


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]