On Mon, 1 Jul 2024, Matthew Malcomson wrote: > Ping plus some extra people on Cc since I wasn't sure who to ask for review. > (Adding maintainers for `middle-end` plus Richard S). > > N.b. I'd update the cover-letter to also mention that no existing > implementation of `function_attribute_inlinable_p` uses "the current function" > in any way.
The patch is OK. Richard. > > On 4/8/24 11:34, Matthew Malcomson wrote: > > The `function_attribute_inlinable_p` hook documentation described it > > returning the value if it is OK to inline the provided fndecl into "the > > current function". AFAICS This hook is only called when > > `current_function_decl` is the same as the `fndecl` argument that the > > hook is given, hence asking whether `fndecl` can be inlined into "the > > current function" doesn't make sense. > > Update the documentation to match this understanding. > > > > The `unspec_may_trap_p` documentation mentioned applying to either > > `unspec` or `unspec_volatile`. AFAICS this hook is only used for > > `unspec` codes since c84a808e493a, so I removed the mention of > > `unspec_volatile`. > > > > gcc/ChangeLog: > > > > * doc/tm.texi (function_attribute_inlinable_p, > > unspec_may_trap_p): Update documentation. > > * target.def (function_attribute_inlinable_p, > > unspec_may_trap_p): Update documentation. > > > > ------------------------------ > > N.b. not entirely sure who to ask for review, went with docs maintainers, > > but > > if that's incorrect please do redirect me. > > > > ############### Attachment also inlined for ease of reply > > ############### > > > > > > diff --git a/gcc/doc/tm.texi b/gcc/doc/tm.texi > > index > > c8b8b126b2424b6552f824ba42ac329cfaf84d84..f0051f0ae1e9444d5d585135c90a68ca760c2fbd > > 100644 > > --- a/gcc/doc/tm.texi > > +++ b/gcc/doc/tm.texi > > @@ -10752,10 +10752,10 @@ attribute handlers. So far this only affects the > > @@ @var{noinit} and > > > > @deftypefn {Target Hook} bool TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P > > @(const_tree @var{fndecl}) > > @cindex inlining > > -This target hook returns @code{true} if it is OK to inline @var{fndecl} > > -into the current function, despite its having target-specific > > -attributes, @code{false} otherwise. By default, if a function has a > > -target specific attribute attached to it, it will not be inlined. > > +This target hook returns @code{false} if the target-specific attributes on > > +@var{fndecl} always block it getting inlined, @code{true} otherwise. By > > +default, if a function has a target specific attribute attached to it, it > > +will not be inlined. > > @end deftypefn > > > > @deftypefn {Target Hook} bool TARGET_OPTION_VALID_ATTRIBUTE_P (tree > > @@var{fndecl}, tree @var{name}, tree @var{args}, int @var{flags}) > > @@ -12245,12 +12245,10 @@ allocation. > > @end deftypefn > > > > @deftypefn {Target Hook} int TARGET_UNSPEC_MAY_TRAP_P (const_rtx @var{x}, > > @unsigned @var{flags}) > > -This target hook returns nonzero if @var{x}, an @code{unspec} or > > -@code{unspec_volatile} operation, might cause a trap. Targets can use > > -this hook to enhance precision of analysis for @code{unspec} and > > -@code{unspec_volatile} operations. You may call @code{may_trap_p_1} > > -to analyze inner elements of @var{x} in which case @var{flags} should be > > -passed along. > > +This target hook returns nonzero if @var{x}, an @code{unspec} might cause > > +a trap. Targets can use this hook to enhance precision of analysis for > > +@code{unspec} operations. You may call @code{may_trap_p_1} to analyze > > inner > > +elements of @var{x} in which case @var{flags} should be passed along. > > @end deftypefn > > > > @deftypefn {Target Hook} void TARGET_SET_CURRENT_FUNCTION (tree > > @@var{decl}) > > diff --git a/gcc/target.def b/gcc/target.def > > index > > fdad7bbc93e2ad8aea30336d5cd4af67801e9c74..2b2a6c11807eff228788fae1cd1370e8971fbf3e > > 100644 > > --- a/gcc/target.def > > +++ b/gcc/target.def > > @@ -2314,10 +2314,10 @@ attribute handlers. So far this only affects the > > @@ @var{noinit} and\n\ > > DEFHOOK > > (function_attribute_inlinable_p, > > "@cindex inlining\n\ > > -This target hook returns @code{true} if it is OK to inline @var{fndecl}\n\ > > -into the current function, despite its having target-specific\n\ > > -attributes, @code{false} otherwise. By default, if a function has a\n\ > > -target specific attribute attached to it, it will not be inlined.", > > +This target hook returns @code{false} if the target-specific attributes > > on\n\ > > +@var{fndecl} always block it getting inlined, @code{true} otherwise. By\n\ > > +default, if a function has a target specific attribute attached to it, > > it\n\ > > +will not be inlined.", > > bool, (const_tree fndecl), > > hook_bool_const_tree_false) > > > > @@ -4057,12 +4057,10 @@ allocation.", > > FLAGS has the same meaning as in rtlanal.cc: may_trap_p_1. */ > > DEFHOOK > > (unspec_may_trap_p, > > - "This target hook returns nonzero if @var{x}, an @code{unspec} or\n\ > > -@code{unspec_volatile} operation, might cause a trap. Targets can use\n\ > > -this hook to enhance precision of analysis for @code{unspec} and\n\ > > -@code{unspec_volatile} operations. You may call @code{may_trap_p_1}\n\ > > -to analyze inner elements of @var{x} in which case @var{flags} should be\n\ > > -passed along.", > > + "This target hook returns nonzero if @var{x}, an @code{unspec} might > > cause\n\ > > +a trap. Targets can use this hook to enhance precision of analysis for\n\ > > +@code{unspec} operations. You may call @code{may_trap_p_1} to analyze > > inner\n\ > > +elements of @var{x} in which case @var{flags} should be passed along.", > > int, (const_rtx x, unsigned flags), > > default_unspec_may_trap_p) > > > > > > > > > -- Richard Biener <rguent...@suse.de> SUSE Software Solutions Germany GmbH, Frankenstrasse 146, 90461 Nuernberg, Germany; GF: Ivo Totev, Andrew McDonald, Werner Knoblich; (HRB 36809, AG Nuernberg)