public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: Jan Hubicka <hubicka@ucw.cz>
To: "H.J. Lu" <hjl.tools@gmail.com>
Cc: gcc-patches@gcc.gnu.org
Subject: Re: [PATCH v3] tree-profile: Disable indirect call profiling for IFUNC resolvers
Date: Wed, 3 Apr 2024 15:38:04 +0200	[thread overview]
Message-ID: <Zg1bvA3Z7pZ3PooP@kam.mff.cuni.cz> (raw)
In-Reply-To: <20240403124032.165069-1-hjl.tools@gmail.com>

> We can't profile indirect calls to IFUNC resolvers nor their callees as
> it requires TLS which hasn't been set up yet when the dynamic linker is
> resolving IFUNC symbols.
> 
> Add an IFUNC resolver caller marker to cgraph_node and set it if the
> function is called by an IFUNC resolver.  Disable indirect call profiling
> for IFUNC resolvers and their callees.
> 
> Tested with profiledbootstrap on Fedora 39/x86-64.
> 
> gcc/ChangeLog:
> 
> 	PR tree-optimization/114115
> 	* cgraph.h (symtab_node): Add check_ifunc_callee_symtab_nodes.
> 	(cgraph_node): Add called_by_ifunc_resolver.
> 	* cgraphunit.cc (symbol_table::compile): Call
> 	symtab_node::check_ifunc_callee_symtab_nodes.
> 	* symtab.cc (check_ifunc_resolver): New.
> 	(ifunc_ref_map): Likewise.
> 	(is_caller_ifunc_resolver): Likewise.
> 	(symtab_node::check_ifunc_callee_symtab_nodes): Likewise.
> 	* tree-profile.cc (gimple_gen_ic_func_profiler): Disable indirect
> 	call profiling for IFUNC resolvers and their callees.
> 
> gcc/testsuite/ChangeLog:
> 
> 	PR tree-optimization/114115
> 	* gcc.dg/pr114115.c: New test.
> +/* { dg-final { scan-tree-dump-not "__gcov_indirect_call_profiler_v" "optimized" } } */
> diff --git a/gcc/tree-profile.cc b/gcc/tree-profile.cc
> index aed13e2b1bc..373dbd60481 100644
> --- a/gcc/tree-profile.cc
> +++ b/gcc/tree-profile.cc
> @@ -520,7 +520,10 @@ gimple_gen_ic_func_profiler (void)
>    gcall *stmt1;
>    tree tree_uid, cur_func, void0;
>  
> -  if (c_node->only_called_directly_p ())
> +  /* Disable indirect call profiling for an IFUNC resolver and its
> +     callees.  */
Please add a comment here referring to the PR and need to have TLS
initialized.

OK witht that change.
Honza

  reply	other threads:[~2024-04-03 13:38 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-04-03 12:40 H.J. Lu
2024-04-03 13:38 ` Jan Hubicka [this message]
2024-04-03 13:49   ` H.J. Lu
2024-04-05  0:34     ` rep.dot.nop
2024-04-05  1:03       ` H.J. Lu
2024-04-05  7:02         ` rep.dot.nop
2024-04-03 15:31 ` Peter Bergner
2024-04-03 15:44   ` H.J. Lu
2024-04-03 15:45   ` Andrew Pinski
2024-04-03 16:16     ` Peter Bergner

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Zg1bvA3Z7pZ3PooP@kam.mff.cuni.cz \
    --to=hubicka@ucw.cz \
    --cc=gcc-patches@gcc.gnu.org \
    --cc=hjl.tools@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).