jit: clarify (lack of) lifetime requirements on input const char *
authorDavid Malcolm <dmalcolm@redhat.com>
Wed, 1 Jul 2015 12:34:24 +0000 (12:34 +0000)
committerDavid Malcolm <dmalcolm@gcc.gnu.org>
Wed, 1 Jul 2015 12:34:24 +0000 (12:34 +0000)
gcc/jit/ChangeLog:
* docs/topics/contexts.rst (gcc_jit_context_set_bool_option):
Clarify lack of lifetime requirements on (const char *) parameter.
* docs/topics/expressions.rst
(gcc_jit_context_new_string_literal): Likewise.
(gcc_jit_context_new_global): Likewise.
* docs/topics/functions.rst (gcc_jit_context_new_param): Likewise.
(gcc_jit_context_new_function): Likewise.
(gcc_jit_function_new_block): Likewise.
(gcc_jit_block_add_comment): Likewise.
* docs/topics/locations.rst (gcc_jit_context_new_location):
Likewise.
* docs/topics/types.rst (gcc_jit_context_new_field): Likewise.
(gcc_jit_context_new_struct_type): Likewise.
* docs/_build/texinfo/libgccjit.texi: Regenerate.

From-SVN: r225245

gcc/jit/ChangeLog
gcc/jit/docs/_build/texinfo/libgccjit.texi
gcc/jit/docs/topics/contexts.rst
gcc/jit/docs/topics/expressions.rst
gcc/jit/docs/topics/functions.rst
gcc/jit/docs/topics/locations.rst
gcc/jit/docs/topics/types.rst

index 325f3b8883ffc7baeff784267c414a1b29393b0e..469d1bc2dabe2731dbd30fb7fa9b6d9b2c8d6f22 100644 (file)
@@ -1,3 +1,20 @@
+2015-07-01  David Malcolm  <dmalcolm@redhat.com>
+
+       * docs/topics/contexts.rst (gcc_jit_context_set_bool_option):
+       Clarify lack of lifetime requirements on (const char *) parameter.
+       * docs/topics/expressions.rst
+       (gcc_jit_context_new_string_literal): Likewise.
+       (gcc_jit_context_new_global): Likewise.
+       * docs/topics/functions.rst (gcc_jit_context_new_param): Likewise.
+       (gcc_jit_context_new_function): Likewise.
+       (gcc_jit_function_new_block): Likewise.
+       (gcc_jit_block_add_comment): Likewise.
+       * docs/topics/locations.rst (gcc_jit_context_new_location):
+       Likewise.
+       * docs/topics/types.rst (gcc_jit_context_new_field): Likewise.
+       (gcc_jit_context_new_struct_type): Likewise.
+       * docs/_build/texinfo/libgccjit.texi: Regenerate.
+
 2015-06-30  David Malcolm  <dmalcolm@redhat.com>
 
        * docs/cp/topics/functions.rst (Blocks): Add switch statements to
index 212df10ff05a547e561009f73977d95b9df3a605..f6ab632688dba52cf2b472154df65a40d1ba35db 100644 (file)
@@ -19,7 +19,7 @@
 
 @copying
 @quotation
-libgccjit 6.0.0 (experimental 20150630), June 30, 2015
+libgccjit 6.0.0 (experimental 20150701), July 01, 2015
 
 David Malcolm
 
@@ -5287,6 +5287,10 @@ Set a string option of the context.
 @deffn {C Type} enum gcc_jit_str_option
 @end deffn
 
+The parameter @code{value} can be NULL.   If non-NULL, the call takes a
+copy of the underlying string, so it is valid to pass in a pointer to
+an on-stack buffer.
+
 There is just one string option specified this way:
 
 @geindex GCC_JIT_STR_OPTION_PROGNAME (C macro)
@@ -6077,6 +6081,10 @@ gcc_jit_struct_set_fields (node, NULL, 2, fields);
 @deffn {C Function} gcc_jit_field *           gcc_jit_context_new_field (gcc_jit_context@w{ }*ctxt, gcc_jit_location@w{ }*loc, gcc_jit_type@w{ }*type, const char@w{ }*name)
 
 Construct a new field, with the given type and name.
+
+The parameter @code{name} must be non-NULL.  The call takes a copy of the
+underlying string, so it is valid to pass in a pointer to an on-stack
+buffer.
 @end deffn
 
 @geindex gcc_jit_field_as_object (C function)
@@ -6093,6 +6101,10 @@ Upcast from field to object.
 @quotation
 
 Construct a new struct type, with the given name and fields.
+
+The parameter @code{name} must be non-NULL.  The call takes a copy of
+the underlying string, so it is valid to pass in a pointer to an
+on-stack buffer.
 @end quotation
 @end deffn
 
@@ -6104,6 +6116,10 @@ Construct a new struct type, with the given name, but without
 specifying the fields.   The fields can be omitted (in which case the
 size of the struct is not known), or later specified using
 @pxref{85,,gcc_jit_struct_set_fields()}.
+
+The parameter @code{name} must be non-NULL.  The call takes a copy of
+the underlying string, so it is valid to pass in a pointer to an
+on-stack buffer.
 @end deffn
 
 @geindex gcc_jit_struct_as_type (C function)
@@ -6327,6 +6343,10 @@ gcc_jit_context_new_rvalue_from_ptr (ctxt, pointer_type, NULL)
 
 Generate an rvalue for the given NIL-terminated string, of type
 @code{GCC_JIT_TYPE_CONST_CHAR_PTR}.
+
+The parameter @code{value} must be non-NULL.  The call takes a copy of the
+underlying string, so it is valid to pass in a pointer to an on-stack
+buffer.
 @end deffn
 
 @node Unary Operations,Binary Operations,Simple expressions,Rvalues
@@ -6975,6 +6995,10 @@ in C.
 
 Add a new global variable of the given type and name to the context.
 
+The parameter @code{name} must be non-NULL.  The call takes a copy of the
+underlying string, so it is valid to pass in a pointer to an on-stack
+buffer.
+
 The "kind" parameter determines the visibility of the "global" outside
 of the @pxref{16,,gcc_jit_result}:
 
@@ -7150,6 +7174,10 @@ A @cite{gcc_jit_param} represents a parameter to a function.
 
 In preparation for creating a function, create a new parameter of the
 given type and name.
+
+The parameter @code{name} must be non-NULL.  The call takes a copy of the
+underlying string, so it is valid to pass in a pointer to an on-stack
+buffer.
 @end deffn
 
 Parameters are lvalues, and thus are also rvalues (and objects), so the
@@ -7249,6 +7277,10 @@ above 0; when optimization is off, this is essentially the
 same as GCC_JIT_FUNCTION_INTERNAL.
 @end deffn
 @end quotation
+
+The parameter @code{name} must be non-NULL.  The call takes a copy of the
+underlying string, so it is valid to pass in a pointer to an on-stack
+buffer.
 @end deffn
 
 @geindex gcc_jit_context_get_builtin_function (C function)
@@ -7283,6 +7315,10 @@ Emit the function in graphviz format to the given path.
 
 Create a new local variable within the function, of the given type and
 name.
+
+The parameter @code{name} must be non-NULL.  The call takes a copy of the
+underlying string, so it is valid to pass in a pointer to an on-stack
+buffer.
 @end deffn
 
 @node Blocks,Statements,Functions,Creating and using functions
@@ -7316,7 +7352,19 @@ one function.
 Create a basic block of the given name.  The name may be NULL, but
 providing meaningful names is often helpful when debugging: it may
 show up in dumps of the internal representation, and in error
-messages.
+messages.  It is copied, so the input buffer does not need to outlive
+the call; you can pass in a pointer to an on-stack buffer, e.g.:
+
+@example
+for (pc = 0; pc < fn->fn_num_ops; pc++)
+ @{
+   char buf[16];
+   sprintf (buf, "instr%i", pc);
+   state.op_blocks[pc] = gcc_jit_function_new_block (state.fn, buf);
+ @}
+@end example
+
+@noindent
 @end deffn
 
 @geindex gcc_jit_block_as_object (C function)
@@ -7411,6 +7459,19 @@ seen via @pxref{66,,GCC_JIT_BOOL_OPTION_DUMP_INITIAL_TREE}
 and @pxref{1c,,GCC_JIT_BOOL_OPTION_DUMP_INITIAL_GIMPLE},
 and thus may be of use when debugging how your project's internal
 representation gets converted to the libgccjit IR.
+
+The parameter @code{text} must be non-NULL.  It is copied, so the input
+buffer does not need to outlive the call.  For example:
+
+@example
+char buf[100];
+snprintf (buf, sizeof (buf),
+          "op%i: %s",
+          pc, opcode_names[op->op_opcode]);
+gcc_jit_block_add_comment (block, loc, buf);
+@end example
+
+@noindent
 @end deffn
 
 @geindex gcc_jit_block_end_with_conditional (C function)
@@ -7747,6 +7808,10 @@ gcc_jit_context_set_bool_option (
 
 Create a @cite{gcc_jit_location} instance representing the given source
 location.
+
+The parameter @code{filename} must be non-NULL.  The call takes a copy of
+the underlying string, so it is valid to pass in a pointer to an
+on-stack buffer.
 @end deffn
 
 @menu
index 1dd4685a4c8ea529b7b9f7b86b3b62531bb8f6a0..78bcb71fac4ec69fabb7296617740181e3fefd24 100644 (file)
@@ -313,6 +313,10 @@ String Options
 
    .. type:: enum gcc_jit_str_option
 
+   The parameter ``value`` can be NULL.   If non-NULL, the call takes a
+   copy of the underlying string, so it is valid to pass in a pointer to
+   an on-stack buffer.
+
    There is just one string option specified this way:
 
    .. macro:: GCC_JIT_STR_OPTION_PROGNAME
index 621991fcc70d06e780d45d389e8e950fe24924a1..c12a3780a9ebc2a58c568bb3496554fde7cb5312 100644 (file)
@@ -122,6 +122,9 @@ Simple expressions
    Generate an rvalue for the given NIL-terminated string, of type
    :c:data:`GCC_JIT_TYPE_CONST_CHAR_PTR`.
 
+   The parameter ``value`` must be non-NULL.  The call takes a copy of the
+   underlying string, so it is valid to pass in a pointer to an on-stack
+   buffer.
 
 Unary Operations
 ****************
@@ -466,6 +469,10 @@ Global variables
 
    Add a new global variable of the given type and name to the context.
 
+   The parameter ``name`` must be non-NULL.  The call takes a copy of the
+   underlying string, so it is valid to pass in a pointer to an on-stack
+   buffer.
+
    The "kind" parameter determines the visibility of the "global" outside
    of the :c:type:`gcc_jit_result`:
 
index 94db471615c75b23fe9b879d9cb10e780f287cbe..f2f8f34970e608c7b9f03571cee15b665e32d16c 100644 (file)
@@ -35,6 +35,10 @@ Params
    In preparation for creating a function, create a new parameter of the
    given type and name.
 
+   The parameter ``name`` must be non-NULL.  The call takes a copy of the
+   underlying string, so it is valid to pass in a pointer to an on-stack
+   buffer.
+
 Parameters are lvalues, and thus are also rvalues (and objects), so the
 following upcasts are available:
 
@@ -111,6 +115,10 @@ Functions
          above 0; when optimization is off, this is essentially the
          same as GCC_JIT_FUNCTION_INTERNAL.
 
+   The parameter ``name`` must be non-NULL.  The call takes a copy of the
+   underlying string, so it is valid to pass in a pointer to an on-stack
+   buffer.
+
 .. function::  gcc_jit_function *\
                gcc_jit_context_get_builtin_function (gcc_jit_context *ctxt,\
                                                      const char *name)
@@ -140,6 +148,9 @@ Functions
    Create a new local variable within the function, of the given type and
    name.
 
+   The parameter ``name`` must be non-NULL.  The call takes a copy of the
+   underlying string, so it is valid to pass in a pointer to an on-stack
+   buffer.
 
 Blocks
 ------
@@ -166,7 +177,17 @@ Blocks
    Create a basic block of the given name.  The name may be NULL, but
    providing meaningful names is often helpful when debugging: it may
    show up in dumps of the internal representation, and in error
-   messages.
+   messages.  It is copied, so the input buffer does not need to outlive
+   the call; you can pass in a pointer to an on-stack buffer, e.g.:
+
+   .. code-block:: c
+
+     for (pc = 0; pc < fn->fn_num_ops; pc++)
+      {
+        char buf[16];
+        sprintf (buf, "instr%i", pc);
+        state.op_blocks[pc] = gcc_jit_function_new_block (state.fn, buf);
+      }
 
 .. function::  gcc_jit_object *\
                gcc_jit_block_as_object (gcc_jit_block *block)
@@ -252,6 +273,17 @@ Statements
    and thus may be of use when debugging how your project's internal
    representation gets converted to the libgccjit IR.
 
+   The parameter ``text`` must be non-NULL.  It is copied, so the input
+   buffer does not need to outlive the call.  For example:
+
+   .. code-block:: c
+
+     char buf[100];
+     snprintf (buf, sizeof (buf),
+               "op%i: %s",
+               pc, opcode_names[op->op_opcode]);
+     gcc_jit_block_add_comment (block, loc, buf);
+
 .. function:: void\
               gcc_jit_block_end_with_conditional (gcc_jit_block *block,\
                                                   gcc_jit_location *loc,\
index 58a76b675fcdd763d9e67df558efd07eeffcbf9e..e5e927386834d577be9a6eddabb97b811fc44804 100644 (file)
@@ -52,6 +52,10 @@ Source Locations
    Create a `gcc_jit_location` instance representing the given source
    location.
 
+   The parameter ``filename`` must be non-NULL.  The call takes a copy of
+   the underlying string, so it is valid to pass in a pointer to an
+   on-stack buffer.
+
 Faking it
 ---------
 If you don't have source code for your internal representation, but need
index fa7aea677c1d122cef53261cc12b2d577b496241..5bfba726c001a0315376539c3e3c9d59cf21ddc7 100644 (file)
@@ -180,6 +180,10 @@ You can model C `struct` types by creating :c:type:`gcc_jit_struct *` and
 
    Construct a new field, with the given type and name.
 
+   The parameter ``name`` must be non-NULL.  The call takes a copy of the
+   underlying string, so it is valid to pass in a pointer to an on-stack
+   buffer.
+
 .. function:: gcc_jit_object *\
               gcc_jit_field_as_object (gcc_jit_field *field)
 
@@ -194,6 +198,10 @@ You can model C `struct` types by creating :c:type:`gcc_jit_struct *` and
 
      Construct a new struct type, with the given name and fields.
 
+     The parameter ``name`` must be non-NULL.  The call takes a copy of
+     the underlying string, so it is valid to pass in a pointer to an
+     on-stack buffer.
+
 .. function:: gcc_jit_struct *\
               gcc_jit_context_new_opaque_struct (gcc_jit_context *ctxt,\
                                                  gcc_jit_location *loc,\
@@ -204,6 +212,10 @@ You can model C `struct` types by creating :c:type:`gcc_jit_struct *` and
      size of the struct is not known), or later specified using
      :c:func:`gcc_jit_struct_set_fields`.
 
+     The parameter ``name`` must be non-NULL.  The call takes a copy of
+     the underlying string, so it is valid to pass in a pointer to an
+     on-stack buffer.
+
 .. function:: gcc_jit_type *\
               gcc_jit_struct_as_type (gcc_jit_struct *struct_type)