>
> for gcc/ChangeLog
>
> * ipa-modref.c (analyze_function): Skip debug stmts.
> * tree-inline.c (estimate_num_insn): Consider builtins even
> without a cgraph_node.
OK, thanks for looking into this issue!
(for mainline and release brances bit later)
> ---
> gcc/ipa-modref.c | 3 ++-
> gcc/tree-inline.c | 4 ++--
> 2 files changed, 4 insertions(+), 3 deletions(-)
>
> diff --git a/gcc/ipa-modref.c b/gcc/ipa-modref.c
> index fafd804d4bae4..f0cddbb077aaa 100644
> --- a/gcc/ipa-modref.c
> +++ b/gcc/ipa-modref.c
> @@ -2108,7 +2108,8 @@ analyze_function (function *f, bool ipa)
> FOR_EACH_BB_FN (bb, f)
> {
> gimple_stmt_iterator si;
> - for (si = gsi_after_labels (bb); !gsi_end_p (si); gsi_next (&si))
> + for (si = gsi_start_nondebug_after_labels_bb (bb);
> + !gsi_end_p (si); gsi_next_nondebug (&si))
It seems that analye_stmt indeed does not skip debug stmts. It is very
odd we got so far without hitting build difference.
Honza
> {
> if (!analyze_stmt (summary, summary_lto,
> gsi_stmt (si), ipa, &recursive_calls)
> diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c
> index d0e9f52d5f138..636130fe0019e 100644
> --- a/gcc/tree-inline.c
> +++ b/gcc/tree-inline.c
> @@ -4436,8 +4436,8 @@ estimate_num_insns (gimple *stmt, eni_weights *weights)
> /* Do not special case builtins where we see the body.
> This just confuse inliner. */
> struct cgraph_node *node;
> - if (!(node = cgraph_node::get (decl))
> - || node->definition)
> + if ((node = cgraph_node::get (decl))
> + && node->definition)
> ;
> /* For buitins that are likely expanded to nothing or
> inlined do not account operand costs. */
>
>
> --
> Alexandre Oliva, happy hacker https://FSFLA.org/blogs/lxo/
> Free Software Activist GNU Toolchain Engineer
> Disinformation flourishes because many people care deeply about injustice
> but very few check the facts. Ask me about <https://stallmansupport.org>