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: fake edges for const and pure functions


> I just found this in tree-cfg.c; the comment is probably wrong with 
> respect to const and pure.  What do you think?

Yes, it should be safe to remove the hack now when we do IPA profiling.
Thanks for noticing it ;)

Honza
> 
> /* Return true if we need to add fake edge to exit at statement T.
>   Helper function for tree_flow_call_edges_add.  */
> 
> static bool
> need_fake_edge_p (tree t)
> {
>  tree call;
> 
>  /* NORETURN and LONGJMP calls already have an edge to exit.
>     CONST and PURE calls do not need one.
>     We don't currently check for CONST and PURE here, although
>     it would be a good idea, because those attributes are
>     figured out from the RTL in mark_constant_function, and
>     the counter incrementation code from -fprofile-arcs
>     leads to different results from -fbranch-probabilities.  */
>  call = get_call_expr_in (t);
>  if (call
>      && !(call_expr_flags (call) & ECF_NORETURN))
>    return true;
> 
>  if (TREE_CODE (t) == ASM_EXPR
>       && (ASM_VOLATILE_P (t) || ASM_INPUT_P (t)))
>    return true;
> 
>  return false;
> }
> 
> Paolo


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