GIMPLE_CALL (GNU Compiler Collection (GCC) Internals)

#### 12.8.4 `GIMPLE_CALL` ¶

GIMPLE function: `gcall` *gimple_build_call `(tree fn, unsigned nargs, ...)` ¶

  Build a `GIMPLE_CALL` statement to function `FN`. The argument `FN` must be either a `FUNCTION_DECL` or a gimple call address as determined by `is_gimple_call_addr`. `NARGS` are the number of arguments. The rest of the arguments follow the argument `NARGS`, and must be trees that are valid as rvalues in gimple (i.e., each operand is validated with `is_gimple_operand`).

GIMPLE function: `gcall` *gimple_build_call_from_tree `(tree call_expr, tree fnptrtype)` ¶

  Build a `GIMPLE_CALL` from a `CALL_EXPR` node. The arguments and the function are taken from the expression directly. The type of the `GIMPLE_CALL` is set from the second parameter passed by a caller. This routine assumes that `call_expr` is already in GIMPLE form. That is, its operands are GIMPLE values and the function call needs no further simplification. All the call flags in `call_expr` are copied over to the new `GIMPLE_CALL`.

GIMPLE function: `gcall` *gimple_build_call_vec `(tree fn, `vec<tree>` args)` ¶

  Identical to `gimple_build_call` but the arguments are stored in a `vec<tree>`.

GIMPLE function: `tree` gimple_call_lhs `(gimple g)` ¶

  Return the `LHS` of call statement `G`.

GIMPLE function: `tree *` gimple_call_lhs_ptr `(gimple g)` ¶

  Return a pointer to the `LHS` of call statement `G`.

GIMPLE function: `void` gimple_call_set_lhs `(gimple g, tree lhs)` ¶

  Set `LHS` to be the `LHS` operand of call statement `G`.

GIMPLE function: `tree` gimple_call_fn `(gimple g)` ¶

  Return the tree node representing the function called by call statement `G`.

GIMPLE function: `void` gimple_call_set_fn `(gcall *g, tree fn)` ¶

  Set `FN` to be the function called by call statement `G`. This has to be a gimple value specifying the address of the called function.

GIMPLE function: `tree` gimple_call_fndecl `(gimple g)` ¶

  If a given `GIMPLE_CALL`’s callee is a `FUNCTION_DECL`, return it. Otherwise return `NULL`. This function is analogous to `get_callee_fndecl` in `GENERIC`.

GIMPLE function: `tree` gimple_call_set_fndecl `(gimple g, tree fndecl)` ¶

  Set the called function to `FNDECL`.

GIMPLE function: `tree` gimple_call_return_type `(const gcall *g)` ¶

  Return the type returned by call statement `G`.

GIMPLE function: `tree` gimple_call_chain `(gimple g)` ¶

  Return the static chain for call statement `G`.

GIMPLE function: `void` gimple_call_set_chain `(gcall *g, tree chain)` ¶

  Set `CHAIN` to be the static chain for call statement `G`.

GIMPLE function: `unsigned` gimple_call_num_args `(gimple g)` ¶

  Return the number of arguments used by call statement `G`.

GIMPLE function: `tree` gimple_call_arg `(gimple g, unsigned index)` ¶

  Return the argument at position `INDEX` for call statement `G`. The first argument is 0.

GIMPLE function: `tree *` gimple_call_arg_ptr `(gimple g, unsigned index)` ¶

  Return a pointer to the argument at position `INDEX` for call statement `G`.

GIMPLE function: `void` gimple_call_set_arg `(gimple g, unsigned index, tree arg)` ¶

  Set `ARG` to be the argument at position `INDEX` for call statement `G`.

GIMPLE function: `void` gimple_call_set_tail `(gcall *s)` ¶

  Mark call statement `S` as being a tail call (i.e., a call just before the exit of a function). These calls are candidate for tail call optimization.

GIMPLE function: `bool` gimple_call_tail_p `(gcall *s)` ¶

  Return true if `GIMPLE_CALL` `S` is marked as a tail call.

GIMPLE function: `bool` gimple_call_noreturn_p `(gimple s)` ¶

  Return true if `S` is a noreturn call.

GIMPLE function: `gimple` gimple_call_copy_skip_args `(gcall *stmt, bitmap args_to_skip)` ¶

  Build a `GIMPLE_CALL` identical to `STMT` but skipping the arguments in the positions marked by the set `ARGS_TO_SKIP`.