https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80197

Alexander Monakov <amonakov at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |amonakov at gcc dot gnu.org

--- Comment #4 from Alexander Monakov <amonakov at gcc dot gnu.org> ---
According to my analysis, this is mostly caused by different inlining decisions
with regards to inlining new_Random_seed into MonteCarlo_integrate.  Inlining
happens at profile-generate time, but does not happen at profile-use time. 
This appears to throw off edge probabilities, and also prevents the compiler
from seeing that R->haveRange accessed in Random_nextDouble (which is inlined)
is always 0.

Declaring new_Random_seed (which is called once) as 'inline
__attribute__((always_inline))' makes code generation sane again.

Reply via email to