tr_expr_t tr_call_expr(tr_level_t level, tmp_label_t label, list_t args) { ir_expr_t func = ir_name_expr(label); ir_expr_t fp = ir_const_expr(fr_offset( tr_static_link(level)->access)); list_t l_args = list(fp, NULL); list_t l_next = l_args; for (; args; args = args->next) l_next = l_next->next = list(un_ex(args->data), NULL); return tr_ex(ir_call_expr(func, l_args)); }
ir_expr_t fr_external_call(string_t name, list_t args) { return ir_call_expr(ir_name_expr(tmp_named_label(name)), args); }