Next: , Previous: <code>GIMPLE_BIND</code>, Up: Tuple specific accessors


12.7.4 GIMPLE_CALL

— GIMPLE function: gimple gimple_build_call (tree fn, unsigned nargs, ...)

构建一条对函数FNGIMPLE_CALL语句。参数FN必须为一个FUNCTION_DECL或者一个由is_gimple_call_addr确定的gimple调用地址。NARGS为参数的数目。其余的参数在参数NARGS之后,必须为可以在gimple中作为右值的tree(即,每个操作数使用is_gimple_operand验证有效)。

— GIMPLE function: gimple gimple_build_call_from_tree (tree call_expr)

根据CALL_EXPR节点构建一个GIMPLE_CALL。参数和函数直接取自表达式。该函数假设call_expr已经是GIMPLE形式。也就是说,其操作数为GIMPLE值,并且函数调用不需要进一步的简化。call_expr中所有的调用标记被复制到新的GIMPLE_CALL中。

— GIMPLE function: gimple gimple_build_call_vec (tree fn, VEC(tree, heap) *args)

等同于gimple_build_call,不过参数是存储在VEC()中。

— GIMPLE function: tree gimple_call_lhs (gimple g)

返回调用语句GLHS

— GIMPLE function: tree *gimple_call_lhs_ptr (gimple g)

返回指向调用语句GLHS的指针。

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

LHS设置为调用语句GLHS操作数。

— GIMPLE function: tree gimple_call_fn (gimple g)

返回调用语句G所调用的tree节点表示的函数。

— GIMPLE function: void gimple_call_set_fn (gimple g, tree fn)

FN设置为调用语句G所调用的函数。这必须是一个gimple值,描述了被调用函数的地址。

— GIMPLE function: tree gimple_call_fndecl (gimple g)

如果给定的GIMPLE_CALL的调用者为一个FUNCTION_DECL,则将其返回。否则返回NULL。该函数类似于GENERIC中的get_callee_fndecl

— GIMPLE function: tree gimple_call_set_fndecl (gimple g, tree fndecl)

将被调用的函数设置为FNDECL

— GIMPLE function: tree gimple_call_return_type (gimple g)

返回调用语句G所返回的类型。

— GIMPLE function: tree gimple_call_chain (gimple g)

返回调用语句G的静态链。

— GIMPLE function: void gimple_call_set_chain (gimple g, tree chain)

CHAIN设置为调用语句G的静态链。

— GIMPLE function: gimple_call_num_args (gimple g)

返回调用语句G的参数个数。

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

返回调用语句G在位置INDEX上的参数。第一个参数的索引为0。

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

返回指向调用语句G在位置INDEX上的参数的指针。

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

ARG设置为调用语句G在位置INDEX上的参数。

— GIMPLE function: void gimple_call_set_tail (gimple s)

将调用语句S标记为一个尾调用(即,就在exit函数之前的调用)。这些调用为尾调用优化的候选。

— GIMPLE function: bool gimple_call_tail_p (gimple s)

返回真,如果GIMPLE_CALL S被标记为尾调用。

— GIMPLE function: void gimple_call_mark_uninlinable (gimple s)

GIMPLE_CALL S标记为不可内联的。

— GIMPLE function: bool gimple_call_cannot_inline_p (gimple s)

返回真,如果GIMPLE_CALL S不能被内联。

— GIMPLE function: bool gimple_call_noreturn_p (gimple s)

返回真,如果S为一个noreturn调用。

— GIMPLE function: gimple gimple_call_copy_skip_args (gimple stmt, bitmap args_to_skip)

构建一个GIMPLE_CALL,等同于STMT,不过跳过由ARGS_TO_SKIP集标记的位置参数。