Committed to branch dmalcolm/jit: gcc/jit/ChangeLog.jit: * TODO.rst: Update. * docs/topics/expressions.rst (gcc_jit_context_new_call): Add a note clarifying the behavior of this entrypoint. * docs/topics/functions.rst (Creating and using functions): Markup fix. (gcc_jit_block_add_assignment_op): Add an example. --- gcc/jit/TODO.rst | 9 ++------- gcc/jit/docs/topics/expressions.rst | 23 +++++++++++++++++++++++ gcc/jit/docs/topics/functions.rst | 13 +++++++++++-- 3 files changed, 36 insertions(+), 9 deletions(-)
diff --git a/gcc/jit/TODO.rst b/gcc/jit/TODO.rst index c1ea024..09c4d9d 100644 --- a/gcc/jit/TODO.rst +++ b/gcc/jit/TODO.rst @@ -29,12 +29,6 @@ API gcc_jit_function_as_rvalue () -* clarify gcc_jit_function_add_eval():: - - (void)expression; - - and, indeed, clarify all of the other operations. - * expressing branch probabilies (like __builtin_expect):: extern gcc_jit_rvalue * @@ -99,7 +93,8 @@ Future milestones * Detect and issue warnings/errors about uses of uninitialized variables -* Warn about unused objects in a context (e.g. rvalues/lvalues)? +* Warn about unused objects in a context (e.g. rvalues/lvalues)? (e.g. + for gcc_jit_context_new_call vs gcc_jit_block_add_eval) Nice to have ============ diff --git a/gcc/jit/docs/topics/expressions.rst b/gcc/jit/docs/topics/expressions.rst index 98d8e92..a95f5c9 100644 --- a/gcc/jit/docs/topics/expressions.rst +++ b/gcc/jit/docs/topics/expressions.rst @@ -364,6 +364,29 @@ Function calls Given a function and the given table of argument rvalues, construct a call to the function, with the result as an rvalue. + .. note:: + + :c:func:`gcc_jit_context_new_call` merely builds a + :c:type:`gcc_jit_rvalue` i.e. an expression that can be evaluated, + perhaps as part of a more complicated expression. + The call *won't* happen unless you add a statement to a function + that evaluates the expression. + + For example, if you want to call a function and discard the result + (or to call a function with ``void`` return type), use + :c:func:`gcc_jit_block_add_eval`: + + .. code-block:: c + + /* Add "(void)printf (arg0, arg1);". */ + gcc_jit_block_add_eval ( + block, NULL, + gcc_jit_context_new_call ( + ctxt, + NULL, + printf_func, + 2, args)); + Type-coercion ************* diff --git a/gcc/jit/docs/topics/functions.rst b/gcc/jit/docs/topics/functions.rst index 15c895a..aa0c069 100644 --- a/gcc/jit/docs/topics/functions.rst +++ b/gcc/jit/docs/topics/functions.rst @@ -18,7 +18,7 @@ .. default-domain:: c Creating and using functions -================================ +============================ Params ------ @@ -224,7 +224,16 @@ Statements lvalue *= rvalue; lvalue /= rvalue; - etc. + etc. For example: + + .. code-block:: c + + /* "i++" */ + gcc_jit_block_add_assignment_op ( + loop_body, NULL, + i, + GCC_JIT_BINARY_OP_PLUS, + gcc_jit_context_one (ctxt, int_type)); .. function:: void\ gcc_jit_block_add_comment (gcc_jit_block *block,\ -- 1.7.11.7