public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: David Malcolm <dmalcolm@redhat.com>
To: Martin Liska <mliska@suse.cz>, gcc-patches@gcc.gnu.org
Subject: Re: [PATCH 6/7] jit,docs: use :expr:`type *` for pointers to a type
Date: Mon, 25 Jul 2022 18:41:49 -0400	[thread overview]
Message-ID: <3fbab5d9a80b70b0680c643be0bd01632f7e429e.camel@redhat.com> (raw)
In-Reply-To: <10eed23621fedb630b49a9cbe89aeab8aa009ac7.1658754788.git.mliska@suse.cz>

On Mon, 2022-07-25 at 14:39 +0200, Martin Liska wrote:
> gcc/jit/ChangeLog:
> 
>         * docs/cp/intro/tutorial02.rst: Use :expr:`type *` for
> pointers to a type
>         * docs/cp/topics/asm.rst: Likewise.
>         * docs/cp/topics/contexts.rst: Likewise.
>         * docs/cp/topics/expressions.rst: Likewise.
>         * docs/cp/topics/functions.rst: Likewise.
>         * docs/cp/topics/objects.rst: Likewise.
>         * docs/intro/tutorial02.rst: Likewise.
>         * docs/intro/tutorial03.rst: Likewise.
>         * docs/intro/tutorial04.rst: Likewise.
>         * docs/intro/tutorial05.rst: Likewise.
>         * docs/topics/compilation.rst: Likewise.
>         * docs/topics/contexts.rst: Likewise.
>         * docs/topics/objects.rst: Likewise.

As per patch 2/7, what's the motivation for this change?  The things
being marked up are types rather than expressions.

Dave

> ---
>  gcc/jit/docs/cp/intro/tutorial02.rst   |  4 ++--
>  gcc/jit/docs/cp/topics/asm.rst         |  2 +-
>  gcc/jit/docs/cp/topics/contexts.rst    |  6 +++---
>  gcc/jit/docs/cp/topics/expressions.rst |  4 ++--
>  gcc/jit/docs/cp/topics/functions.rst   |  2 +-
>  gcc/jit/docs/cp/topics/objects.rst     |  2 +-
>  gcc/jit/docs/intro/tutorial02.rst      | 16 +++++++--------
>  gcc/jit/docs/intro/tutorial03.rst      | 28 +++++++++++++-----------
> --
>  gcc/jit/docs/intro/tutorial04.rst      |  2 +-
>  gcc/jit/docs/intro/tutorial05.rst      |  4 ++--
>  gcc/jit/docs/topics/compilation.rst    |  8 ++++----
>  gcc/jit/docs/topics/contexts.rst       |  6 +++---
>  gcc/jit/docs/topics/objects.rst        |  6 +++---
>  13 files changed, 45 insertions(+), 45 deletions(-)
> 
> diff --git a/gcc/jit/docs/cp/intro/tutorial02.rst
> b/gcc/jit/docs/cp/intro/tutorial02.rst
> index 55675cc7398..9f9a7f3858e 100644
> --- a/gcc/jit/docs/cp/intro/tutorial02.rst
> +++ b/gcc/jit/docs/cp/intro/tutorial02.rst
> @@ -39,7 +39,7 @@ First we need to include the relevant header:
>  
>  All state associated with compilation is associated with a
>  :type:`gccjit::context`, which is a thin C++ wrapper around the C
> API's
> -:c:type:`gcc_jit_context *`.
> +:c:expr:`gcc_jit_context *`.
>  
>  Create one using :func:`gccjit::context::acquire`:
>  
> @@ -194,7 +194,7 @@ OK, we've populated the context.  We can now
> compile it using
>     gcc_jit_result *result;
>     result = ctxt.compile ();
>  
> -and get a :c:type:`gcc_jit_result *`.
> +and get a :c:expr:`gcc_jit_result *`.
>  
>  We can now use :c:func:`gcc_jit_result_get_code` to look up a
> specific
>  machine code routine within the result, in this case, the function
> we
> diff --git a/gcc/jit/docs/cp/topics/asm.rst
> b/gcc/jit/docs/cp/topics/asm.rst
> index f7e4e952b10..0d63da3d59e 100644
> --- a/gcc/jit/docs/cp/topics/asm.rst
> +++ b/gcc/jit/docs/cp/topics/asm.rst
> @@ -43,7 +43,7 @@ Adding assembler instructions within a function
>     to outputs.
>  
>     :class:`gccjit::extended_asm` is a subclass of
> :class:`gccjit::object`.
> -   It is a thin wrapper around the C API's
> :c:type:`gcc_jit_extended_asm *`.
> +   It is a thin wrapper around the C API's
> :c:expr:`gcc_jit_extended_asm *`.
>  
>     To avoid having an API entrypoint with a very large number of
>     parameters, an extended ``asm`` statement is made in stages:
> diff --git a/gcc/jit/docs/cp/topics/contexts.rst
> b/gcc/jit/docs/cp/topics/contexts.rst
> index f60f2102b3e..2f2456a9c0d 100644
> --- a/gcc/jit/docs/cp/topics/contexts.rst
> +++ b/gcc/jit/docs/cp/topics/contexts.rst
> @@ -29,9 +29,9 @@ compilation.
>  
>  You can set up options on it, and add types, functions and code.
>  Invoking :func:`gccjit::context::compile` on it gives you a
> -:c:type:`gcc_jit_result *`.
> +:c:expr:`gcc_jit_result *`.
>  
> -It is a thin wrapper around the C API's :c:type:`gcc_jit_context *`.
> +It is a thin wrapper around the C API's :c:expr:`gcc_jit_context *`.
>  
>  Lifetime-management
>  -------------------
> @@ -48,7 +48,7 @@ cleanup of such objects is done for you when the
> context is released.
>  .. function:: void gccjit::context::release ()
>  
>    This function releases all resources associated with the given
> context.
> -  Both the context itself and all of its :c:type:`gccjit::object *`
> +  Both the context itself and all of its :expr:`gccjit::object *`
>    instances are cleaned up.  It should be called exactly once on a
> given
>    context.
>  
> diff --git a/gcc/jit/docs/cp/topics/expressions.rst
> b/gcc/jit/docs/cp/topics/expressions.rst
> index dec5b477811..01eb2898d0d 100644
> --- a/gcc/jit/docs/cp/topics/expressions.rst
> +++ b/gcc/jit/docs/cp/topics/expressions.rst
> @@ -26,7 +26,7 @@ Rvalues
>  
>  A :class:`gccjit::rvalue` is an expression that can be computed.  It
> is a
>  subclass of :class:`gccjit::object`, and is a thin wrapper around
> -:c:type:`gcc_jit_rvalue *` from the C API.
> +:c:expr:`gcc_jit_rvalue *` from the C API.
>  
>  It can be simple, e.g.:
>  
> @@ -491,7 +491,7 @@ a storage area (such as a variable).  It is a
> subclass of
>  :class:`gccjit::rvalue`, where the rvalue is computed by reading
> from the
>  storage area.
>  
> -It iss a thin wrapper around :c:type:`gcc_jit_lvalue *` from the C
> API.
> +It iss a thin wrapper around :c:expr:`gcc_jit_lvalue *` from the C
> API.
>  
>  .. function:: gccjit::rvalue \
>                gccjit::lvalue::get_address (gccjit::location loc)
> diff --git a/gcc/jit/docs/cp/topics/functions.rst
> b/gcc/jit/docs/cp/topics/functions.rst
> index 4e325ac3fef..24534cc5d4f 100644
> --- a/gcc/jit/docs/cp/topics/functions.rst
> +++ b/gcc/jit/docs/cp/topics/functions.rst
> @@ -36,7 +36,7 @@ Params
>  
>  :class:`gccjit::param` is a subclass of :class:`gccjit::lvalue` (and
> thus
>  of :class:`gccjit::rvalue` and :class:`gccjit::object`).  It is a
> thin
> -wrapper around the C API's :c:type:`gcc_jit_param *`.
> +wrapper around the C API's :c:expr:`gcc_jit_param *`.
>  
>  Functions
>  ---------
> diff --git a/gcc/jit/docs/cp/topics/objects.rst
> b/gcc/jit/docs/cp/topics/objects.rst
> index d81a84cab40..ca9243b1c71 100644
> --- a/gcc/jit/docs/cp/topics/objects.rst
> +++ b/gcc/jit/docs/cp/topics/objects.rst
> @@ -23,7 +23,7 @@ Objects
>  .. class:: gccjit::object
>  
>  Almost every entity in the API (with the exception of
> -:class:`gccjit::context` and :c:type:`gcc_jit_result *`) is a
> +:class:`gccjit::context` and :c:expr:`gcc_jit_result *`) is a
>  "contextual" object, a :class:`gccjit::object`.
>  
>  A JIT object:
> diff --git a/gcc/jit/docs/intro/tutorial02.rst
> b/gcc/jit/docs/intro/tutorial02.rst
> index 5739548b0e3..9fcaad5518c 100644
> --- a/gcc/jit/docs/intro/tutorial02.rst
> +++ b/gcc/jit/docs/intro/tutorial02.rst
> @@ -38,7 +38,7 @@ First we need to include the relevant header:
>    #include <libgccjit.h>
>  
>  All state associated with compilation is associated with a
> -:c:type:`gcc_jit_context *`.
> +:c:expr:`gcc_jit_context *`.
>  
>  Create one using :c:func:`gcc_jit_context_acquire`:
>  
> @@ -50,7 +50,7 @@ Create one using :c:func:`gcc_jit_context_acquire`:
>  The JIT library has a system of types.  It is statically-typed:
> every
>  expression is of a specific type, fixed at compile-time.  In our
> example,
>  all of the expressions are of the C `int` type, so let's obtain this
> from
> -the context, as a :c:type:`gcc_jit_type *`, using
> +the context, as a :c:expr:`gcc_jit_type *`, using
>  :c:func:`gcc_jit_context_get_type`:
>  
>  .. code-block:: c
> @@ -58,8 +58,8 @@ the context, as a :c:type:`gcc_jit_type *`, using
>    gcc_jit_type *int_type =
>      gcc_jit_context_get_type (ctxt, GCC_JIT_TYPE_INT);
>  
> -:c:type:`gcc_jit_type *` is an example of a "contextual" object:
> every
> -entity in the API is associated with a :c:type:`gcc_jit_context *`.
> +:c:expr:`gcc_jit_type *` is an example of a "contextual" object:
> every
> +entity in the API is associated with a :c:expr:`gcc_jit_context *`.
>  
>  Memory management is easy: all such "contextual" objects are
> automatically
>  cleaned up for you when the context is released, using
> @@ -93,7 +93,7 @@ For example, :c:func:`gcc_jit_type_as_object`:
>  
>     gcc_jit_object *obj = gcc_jit_type_as_object (int_type);
>  
> -One thing you can do with a :c:type:`gcc_jit_object *` is
> +One thing you can do with a :c:expr:`gcc_jit_object *` is
>  to ask it for a human-readable description, using
>  :c:func:`gcc_jit_object_get_debug_string`:
>  
> @@ -157,8 +157,8 @@ We can build the expression using
> :c:func:`gcc_jit_context_new_binary_op`:
>         gcc_jit_param_as_rvalue (param_i),
>         gcc_jit_param_as_rvalue (param_i));
>  
> -A :c:type:`gcc_jit_rvalue *` is another example of a
> -:c:type:`gcc_jit_object *` subclass.  We can upcast it using
> +A :c:expr:`gcc_jit_rvalue *` is another example of a
> +:c:expr:`gcc_jit_object *` subclass.  We can upcast it using
>  :c:func:`gcc_jit_rvalue_as_object` and as before print it with
>  :c:func:`gcc_jit_object_get_debug_string`.
>  
> @@ -190,7 +190,7 @@ OK, we've populated the context.  We can now
> compile it using
>     gcc_jit_result *result;
>     result = gcc_jit_context_compile (ctxt);
>  
> -and get a :c:type:`gcc_jit_result *`.
> +and get a :c:expr:`gcc_jit_result *`.
>  
>  At this point we're done with the context; we can release it:
>  
> diff --git a/gcc/jit/docs/intro/tutorial03.rst
> b/gcc/jit/docs/intro/tutorial03.rst
> index 50d71ba6d1a..478ea2721de 100644
> --- a/gcc/jit/docs/intro/tutorial03.rst
> +++ b/gcc/jit/docs/intro/tutorial03.rst
> @@ -55,7 +55,7 @@ Here's what the final control flow graph will look
> like:
>        :alt: image of a control flow graph
>  
>  As before, we include the libgccjit header and make a
> -:c:type:`gcc_jit_context *`.
> +:c:expr:`gcc_jit_context *`.
>  
>  .. code-block:: c
>  
> @@ -98,14 +98,14 @@ Let's build the function:
>  Expressions: lvalues and rvalues
>  ********************************
>  
> -The base class of expression is the :c:type:`gcc_jit_rvalue *`,
> +The base class of expression is the :c:expr:`gcc_jit_rvalue *`,
>  representing an expression that can be on the *right*-hand side of
>  an assignment: a value that can be computed somehow, and assigned
>  *to* a storage area (such as a variable).  It has a specific
> -:c:type:`gcc_jit_type *`.
> +:c:expr:`gcc_jit_type *`.
>  
> -Anothe important class is :c:type:`gcc_jit_lvalue *`.
> -A :c:type:`gcc_jit_lvalue *`. is something that can of the *left*-
> hand
> +Anothe important class is :c:expr:`gcc_jit_lvalue *`.
> +A :c:expr:`gcc_jit_lvalue *`. is something that can of the *left*-
> hand
>  side of an assignment: a storage area (such as a variable).
>  
>  In other words, every assignment can be thought of as:
> @@ -114,8 +114,8 @@ In other words, every assignment can be thought
> of as:
>  
>     LVALUE = RVALUE;
>  
> -Note that :c:type:`gcc_jit_lvalue *` is a subclass of
> -:c:type:`gcc_jit_rvalue *`, where in an assignment of the form:
> +Note that :c:expr:`gcc_jit_lvalue *` is a subclass of
> +:c:expr:`gcc_jit_rvalue *`, where in an assignment of the form:
>  
>  .. code-block:: c
>  
> @@ -135,10 +135,10 @@ So far the only expressions we've seen are `i *
> i`:
>         gcc_jit_param_as_rvalue (param_i),
>         gcc_jit_param_as_rvalue (param_i));
>  
> -which is a :c:type:`gcc_jit_rvalue *`, and the various function
> +which is a :c:expr:`gcc_jit_rvalue *`, and the various function
>  parameters: `param_i` and `param_n`, instances of
> -:c:type:`gcc_jit_param *`, which is a subclass of
> -:c:type:`gcc_jit_lvalue *` (and, in turn, of :c:type:`gcc_jit_rvalue
> *`):
> +:c:expr:`gcc_jit_param *`, which is a subclass of
> +:c:expr:`gcc_jit_lvalue *` (and, in turn, of :c:expr:`gcc_jit_rvalue
> *`):
>  we can both read from and write to function parameters within the
>  body of a function.
>  
> @@ -154,7 +154,7 @@ name:
>    gcc_jit_lvalue *sum =
>      gcc_jit_function_new_local (func, NULL, the_type, "sum");
>  
> -These are instances of :c:type:`gcc_jit_lvalue *` - they can be read
> from
> +These are instances of :c:expr:`gcc_jit_lvalue *` - they can be read
> from
>  and written to.
>  
>  Note that there is no precanned way to create *and* initialize a
> variable
> @@ -178,8 +178,8 @@ handle the control flow.  In this case, we need 4
> blocks:
>  3. the body of the loop
>  4. after the loop terminates (`return sum`)
>  
> -so we create these as :c:type:`gcc_jit_block *` instances within the
> -:c:type:`gcc_jit_function *`:
> +so we create these as :c:expr:`gcc_jit_block *` instances within the
> +:c:expr:`gcc_jit_function *`:
>  
>  .. code-block:: c
>  
> @@ -224,7 +224,7 @@ We can then terminate the entry block by jumping
> to the conditional:
>  The conditional block is equivalent to the line `while (i < n)` from
> our
>  C example. It contains a single statement: a conditional, which
> jumps to
>  one of two destination blocks depending on a boolean
> -:c:type:`gcc_jit_rvalue *`, in this case the comparison of `i` and
> `n`.
> +:c:expr:`gcc_jit_rvalue *`, in this case the comparison of `i` and
> `n`.
>  We build the comparison using
> :c:func:`gcc_jit_context_new_comparison`:
>  
>  .. code-block:: c
> diff --git a/gcc/jit/docs/intro/tutorial04.rst
> b/gcc/jit/docs/intro/tutorial04.rst
> index c2e3fb5c054..a08119f51b1 100644
> --- a/gcc/jit/docs/intro/tutorial04.rst
> +++ b/gcc/jit/docs/intro/tutorial04.rst
> @@ -126,7 +126,7 @@ then directly executed in-process:
>      :end-before: enum opcode
>      :language: c
>  
> -The lifetime of the code is tied to that of a
> :c:type:`gcc_jit_result *`.
> +The lifetime of the code is tied to that of a
> :c:expr:`gcc_jit_result *`.
>  We'll handle this by bundling them up in a structure, so that we can
>  clean them up together by calling :c:func:`gcc_jit_result_release`:
>  
> diff --git a/gcc/jit/docs/intro/tutorial05.rst
> b/gcc/jit/docs/intro/tutorial05.rst
> index b977d1ddf59..1c4774486be 100644
> --- a/gcc/jit/docs/intro/tutorial05.rst
> +++ b/gcc/jit/docs/intro/tutorial05.rst
> @@ -95,7 +95,7 @@ Here's what a simple ``.bf`` script looks like:
>  Converting a brainf script to libgccjit IR
>  ******************************************
>  
> -As before we write simple code to populate a
> :c:type:`gcc_jit_context *`.
> +As before we write simple code to populate a
> :c:expr:`gcc_jit_context *`.
>  
>     .. literalinclude:: ../examples/tut05-bf.c
>      :start-after: #define MAX_OPEN_PARENS 16
> @@ -261,7 +261,7 @@ state ``idx`` and ``data_cells``:
>  Other forms of ahead-of-time-compilation
>  ****************************************
>  
> -The above demonstrates compiling a :c:type:`gcc_jit_context *`
> directly
> +The above demonstrates compiling a :c:expr:`gcc_jit_context *`
> directly
>  to an executable.  It's also possible to compile it to an object
> file,
>  and to a dynamic library.  See the documentation of
>  :c:func:`gcc_jit_context_compile_to_file` for more information.
> diff --git a/gcc/jit/docs/topics/compilation.rst
> b/gcc/jit/docs/topics/compilation.rst
> index adcde8d8eb9..3dd9bc6f5f7 100644
> --- a/gcc/jit/docs/topics/compilation.rst
> +++ b/gcc/jit/docs/topics/compilation.rst
> @@ -20,7 +20,7 @@
>  Compiling a context
>  ===================
>  
> -Once populated, a :c:type:`gcc_jit_context *` can be compiled to
> +Once populated, a :c:expr:`gcc_jit_context *` can be compiled to
>  machine code, either in-memory via :c:func:`gcc_jit_context_compile`
> or
>  to disk via :c:func:`gcc_jit_context_compile_to_file`.
>  
> @@ -80,7 +80,7 @@ In-memory compilation
>  
>     Note that the resulting machine code becomes invalid after
>     :func:`gcc_jit_result_release` is called on the
> -   :type:`gcc_jit_result *`; attempting to call it after that may
> lead
> +   :expr:`gcc_jit_result *`; attempting to call it after that may
> lead
>     to a segmentation fault.
>  
>  .. function:: void *\
> @@ -125,7 +125,7 @@ In-memory compilation
>  
>     Note that the resulting address becomes invalid after
>     :func:`gcc_jit_result_release` is called on the
> -   :type:`gcc_jit_result *`; attempting to use it after that may
> lead
> +   :expr:`gcc_jit_result *`; attempting to use it after that may
> lead
>     to a segmentation fault.
>  
>  .. function:: void\
> @@ -153,7 +153,7 @@ For linking in object files, use
> :c:func:`gcc_jit_context_add_driver_option`.
>                                                 enum
> gcc_jit_output_kind output_kind,\
>                                                 const char
> *output_path)
>  
> -   Compile the :c:type:`gcc_jit_context *` to a file of the given
> +   Compile the :c:expr:`gcc_jit_context *` to a file of the given
>     kind.
>  
>  :c:func:`gcc_jit_context_compile_to_file` ignores the suffix of
> diff --git a/gcc/jit/docs/topics/contexts.rst
> b/gcc/jit/docs/topics/contexts.rst
> index 205b5f3dcf5..f746e2819d2 100644
> --- a/gcc/jit/docs/topics/contexts.rst
> +++ b/gcc/jit/docs/topics/contexts.rst
> @@ -39,14 +39,14 @@ cleanup of such objects is done for you when the
> context is released.
>  
>  .. function:: gcc_jit_context *gcc_jit_context_acquire (void)
>  
> -  This function acquires a new :c:type:`gcc_jit_context *` instance,
> +  This function acquires a new :c:expr:`gcc_jit_context *` instance,
>    which is independent of any others that may be present within this
>    process.
>  
>  .. function:: void gcc_jit_context_release (gcc_jit_context *ctxt)
>  
>    This function releases all resources associated with the given
> context.
> -  Both the context itself and all of its :c:type:`gcc_jit_object *`
> +  Both the context itself and all of its :c:expr:`gcc_jit_object *`
>    instances are cleaned up.  It should be called exactly once on a
> given
>    context.
>  
> @@ -89,7 +89,7 @@ cleanup of such objects is done for you when the
> context is released.
>  
>  Thread-safety
>  -------------
> -Instances of :c:type:`gcc_jit_context *` created via
> +Instances of :c:expr:`gcc_jit_context *` created via
>  :c:func:`gcc_jit_context_acquire` are independent from each other:
>  only one thread may use a given context at once, but multiple
> threads
>  could each have their own contexts without needing locks.
> diff --git a/gcc/jit/docs/topics/objects.rst
> b/gcc/jit/docs/topics/objects.rst
> index cd117e2937e..42f3675cd1a 100644
> --- a/gcc/jit/docs/topics/objects.rst
> +++ b/gcc/jit/docs/topics/objects.rst
> @@ -23,12 +23,12 @@ Objects
>  .. type:: gcc_jit_object
>  
>  Almost every entity in the API (with the exception of
> -:c:type:`gcc_jit_context *` and :c:type:`gcc_jit_result *`) is a
> -"contextual" object, a :c:type:`gcc_jit_object *`
> +:c:expr:`gcc_jit_context *` and :c:expr:`gcc_jit_result *`) is a
> +"contextual" object, a :c:expr:`gcc_jit_object *`
>  
>  A JIT object:
>  
> -  * is associated with a :c:type:`gcc_jit_context *`.
> +  * is associated with a :c:expr:`gcc_jit_context *`.
>  
>    * is automatically cleaned up for you when its context is released
> so
>      you don't need to manually track and cleanup all objects, just
> the



  reply	other threads:[~2022-07-25 22:41 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-07-25 13:13 [PATCH 0/7] jit,docs: remove warnings and modernize the docs Martin Liska
2022-07-25  8:52 ` [PATCH 1/7] jit,docs: use enum directive for enumeral types Martin Liska
2022-07-25 22:35   ` David Malcolm
2022-07-26  4:47     ` Martin Liška
2022-07-25  9:03 ` [PATCH 2/7] jit, docs: replace c:type:`int_type` with :expr:`int_type` Martin Liska
2022-07-25 22:37   ` [PATCH 2/7] jit,docs: " David Malcolm
2022-07-26  4:48     ` Martin Liška
2022-07-26 15:42       ` David Malcolm
2022-07-25  9:15 ` [PATCH 3/7] jit,docs: various fixes Martin Liska
2022-07-25 22:39   ` David Malcolm
2022-07-25  9:51 ` [PATCH 4/7] jit,docs: compact function declarations Martin Liska
2022-07-25 22:39   ` David Malcolm
2022-07-25 10:35 ` [PATCH 5/7] jit,docs: use list-table instead of fixed table Martin Liska
2022-07-25 22:40   ` David Malcolm
2022-07-25 12:39 ` [PATCH 6/7] jit,docs: use :expr:`type *` for pointers to a type Martin Liska
2022-07-25 22:41   ` David Malcolm [this message]
2022-07-26  4:50     ` Martin Liška
2022-07-26 15:43       ` David Malcolm
2022-07-26  4:55 ` [PATCH 7/7] jit,docs: remove :ref:`modindex` Martin Liška
2022-07-26 15:44   ` David Malcolm

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=3fbab5d9a80b70b0680c643be0bd01632f7e429e.camel@redhat.com \
    --to=dmalcolm@redhat.com \
    --cc=gcc-patches@gcc.gnu.org \
    --cc=mliska@suse.cz \
    /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).