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)

Reply via email to