diff mbox series

doc: Fix documentation for __builtin_dynamic_object_size

Message ID 20221215165814.1808816-1-siddhesh@gotplt.org
State New
Headers show
Series doc: Fix documentation for __builtin_dynamic_object_size | expand

Commit Message

Siddhesh Poyarekar Dec. 15, 2022, 4:58 p.m. UTC
__builtin_dynamic_object_size is missing from the full list of builtins,
so add it.  Also mention it alongside __builtin_object_size in the
passes description.

gcc/ChangeLog:

	* doc/extend.texi (__builtin_dynamic_object_size): Document
	builtin.
	* doc/passes.texi
	(Optimize calls to @code{__builtin_object_size}): Also mention
	__builtin_dynamic_object_size.

Signed-off-by: Siddhesh Poyarekar <siddhesh@gotplt.org>
---
 gcc/doc/extend.texi | 10 ++++++++--
 gcc/doc/passes.texi | 11 ++++++-----
 2 files changed, 14 insertions(+), 7 deletions(-)

Comments

Jakub Jelinek Dec. 15, 2022, 5:09 p.m. UTC | #1
On Thu, Dec 15, 2022 at 11:58:14AM -0500, Siddhesh Poyarekar wrote:
> --- a/gcc/doc/extend.texi
> +++ b/gcc/doc/extend.texi
> @@ -14291,8 +14291,14 @@ and GCC does not issue a warning.
>  @end deftypefn
>  
>  @deftypefn {Built-in Function}{size_t} __builtin_object_size (const void * @var{ptr}, int @var{type})
> -Returns the size of an object pointed to by @var{ptr}.  @xref{Object Size
> -Checking}, for a detailed description of the function.
> +Returns a constant size estimate of an object pointed to by @var{ptr}.
> +@xref{Object Size Checking}, for a detailed description of the function.
> +@end deftypefn
> +
> +@deftypefn {Built-in Function}{size_t} __builtin_dynamic_object_size (const void * @var{ptr}, int @var{type})
> +Similar to @code{__builtin_object_size} except that the return value
> +need not be a constant.  @xref{Object Size Checking}, for a detailed
> +description of the function.
>  @end deftypefn
>  
>  @deftypefn {Built-in Function} double __builtin_huge_val (void)

The above is ok.

> diff --git a/gcc/doc/passes.texi b/gcc/doc/passes.texi
> index 9e8b4f50ad6..d649db72bbe 100644
> --- a/gcc/doc/passes.texi
> +++ b/gcc/doc/passes.texi
> @@ -843,12 +843,13 @@ foo()}, this pass tries to change the call so that the address of
>  pass is located in @code{tree-nrv.cc} and is described by
>  @code{pass_return_slot}.
>  
> -@item Optimize calls to @code{__builtin_object_size}
> +@item Optimize calls to @code{__builtin_object_size} or
> +@code{__builtin_dynamic_object_size}
>  
> -This is a propagation pass similar to CCP that tries to remove calls
> -to @code{__builtin_object_size} when the size of the object can be
> -computed at compile-time.  This pass is located in
> -@file{tree-object-size.cc} and is described by
> +This is a propagation pass similar to CCP that tries to remove calls to
> +@code{__builtin_object_size} or @code{__builtin_dynamic_object_size}
> +when the size of the object can be computed at compile-time.  This pass

Can be computed at compile-time is only true for __bos, for
__bdos is if it can be computed.

> +is located in @file{tree-object-size.cc} and is described by
>  @code{pass_object_sizes}.
>  
>  @item Loop invariant motion

Otherwise LGTM.

	Jakub
Siddhesh Poyarekar Dec. 15, 2022, 5:21 p.m. UTC | #2
On 2022-12-15 12:09, Jakub Jelinek wrote:
>> -This is a propagation pass similar to CCP that tries to remove calls
>> -to @code{__builtin_object_size} when the size of the object can be
>> -computed at compile-time.  This pass is located in
>> -@file{tree-object-size.cc} and is described by
>> +This is a propagation pass similar to CCP that tries to remove calls to
>> +@code{__builtin_object_size} or @code{__builtin_dynamic_object_size}
>> +when the size of the object can be computed at compile-time.  This pass
> 
> Can be computed at compile-time is only true for __bos, for
> __bdos is if it can be computed.

How about:


This is a propagation pass similar to CCP that tries to remove calls to
@code{__builtin_object_size} when the size of the object can be computed 
at compile-time.  It also tries to replace calls to 

@code{__builtin_dynamic_object_size} with an expression that evaluates
the size of the object.  This pass is located in
@file{tree-object-size.cc} and is described by @code{pass_object_sizes}.
Jakub Jelinek Dec. 15, 2022, 5:24 p.m. UTC | #3
On Thu, Dec 15, 2022 at 12:21:21PM -0500, Siddhesh Poyarekar wrote:
> On 2022-12-15 12:09, Jakub Jelinek wrote:
> > > -This is a propagation pass similar to CCP that tries to remove calls
> > > -to @code{__builtin_object_size} when the size of the object can be
> > > -computed at compile-time.  This pass is located in
> > > -@file{tree-object-size.cc} and is described by
> > > +This is a propagation pass similar to CCP that tries to remove calls to
> > > +@code{__builtin_object_size} or @code{__builtin_dynamic_object_size}
> > > +when the size of the object can be computed at compile-time.  This pass
> > 
> > Can be computed at compile-time is only true for __bos, for
> > __bdos is if it can be computed.
> 
> How about:
> 
> 
> This is a propagation pass similar to CCP that tries to remove calls to
> @code{__builtin_object_size} when the size of the object can be computed at
> compile-time.  It also tries to replace calls to
> 
> @code{__builtin_dynamic_object_size} with an expression that evaluates
> the size of the object.  This pass is located in
> @file{tree-object-size.cc} and is described by @code{pass_object_sizes}.

Without the empty space in between and perhaps with replacing size with
upper or lower bound for the size of the object in both cases ok.

	Jakub
diff mbox series

Patch

diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi
index d3812fa55b0..608ff54f845 100644
--- a/gcc/doc/extend.texi
+++ b/gcc/doc/extend.texi
@@ -14291,8 +14291,14 @@  and GCC does not issue a warning.
 @end deftypefn
 
 @deftypefn {Built-in Function}{size_t} __builtin_object_size (const void * @var{ptr}, int @var{type})
-Returns the size of an object pointed to by @var{ptr}.  @xref{Object Size
-Checking}, for a detailed description of the function.
+Returns a constant size estimate of an object pointed to by @var{ptr}.
+@xref{Object Size Checking}, for a detailed description of the function.
+@end deftypefn
+
+@deftypefn {Built-in Function}{size_t} __builtin_dynamic_object_size (const void * @var{ptr}, int @var{type})
+Similar to @code{__builtin_object_size} except that the return value
+need not be a constant.  @xref{Object Size Checking}, for a detailed
+description of the function.
 @end deftypefn
 
 @deftypefn {Built-in Function} double __builtin_huge_val (void)
diff --git a/gcc/doc/passes.texi b/gcc/doc/passes.texi
index 9e8b4f50ad6..d649db72bbe 100644
--- a/gcc/doc/passes.texi
+++ b/gcc/doc/passes.texi
@@ -843,12 +843,13 @@  foo()}, this pass tries to change the call so that the address of
 pass is located in @code{tree-nrv.cc} and is described by
 @code{pass_return_slot}.
 
-@item Optimize calls to @code{__builtin_object_size}
+@item Optimize calls to @code{__builtin_object_size} or
+@code{__builtin_dynamic_object_size}
 
-This is a propagation pass similar to CCP that tries to remove calls
-to @code{__builtin_object_size} when the size of the object can be
-computed at compile-time.  This pass is located in
-@file{tree-object-size.cc} and is described by
+This is a propagation pass similar to CCP that tries to remove calls to
+@code{__builtin_object_size} or @code{__builtin_dynamic_object_size}
+when the size of the object can be computed at compile-time.  This pass
+is located in @file{tree-object-size.cc} and is described by
 @code{pass_object_sizes}.
 
 @item Loop invariant motion