On Thu, Mar 14, 2024 at 04:27:22PM -0400, Jason Merrill wrote:
> OK for trunk?
>
> -- 8< --
>
> It came up on the mailing list that OBJECT_BEGIN/END are described as
> marking object lifetime, but mark the beginning of the constructor and end
> of the destructor, whereas the C++ notion of lifetime is between the end of
> the constructor and beginning of the destructor. So let's fix the comments.
>
> gcc/ChangeLog:
>
> * tree-core.h (enum clobber_kind): Clarify CLOBBER_OBJECT_*
> comments.
LGTM.
> diff --git a/gcc/tree-core.h b/gcc/tree-core.h
> index 8a89462bd7e..654d182b1c3 100644
> --- a/gcc/tree-core.h
> +++ b/gcc/tree-core.h
> @@ -993,9 +993,11 @@ enum clobber_kind {
> CLOBBER_UNDEF,
> /* Beginning of storage duration, e.g. malloc. */
> CLOBBER_STORAGE_BEGIN,
> - /* Beginning of object lifetime, e.g. C++ constructor. */
> + /* Beginning of object data, e.g. start of C++ constructor. This differs
> + from C++ 'lifetime', which starts when initialization is complete; a
> + clobber there would discard the initialization. */
> CLOBBER_OBJECT_BEGIN,
> - /* End of object lifetime, e.g. C++ destructor. */
> + /* End of object data, e.g. end of C++ destructor. */
> CLOBBER_OBJECT_END,
> /* End of storage duration, e.g. free. */
> CLOBBER_STORAGE_END,
>
> base-commit: 5c01ede02a1f9ba1a58ab8d96a73e46e0484d820
> --
> 2.43.2
Jakub