#include "config.h"#include "system.h"#include "rtl.h"#include "tree.h"#include "flags.h"#include "expr.h"#include "libfuncs.h"#include "function.h"#include "regs.h"#include "toplev.h"#include "output.h"#include "tm_p.h"#include "timevar.h"#include "sbitmap.h"#include "langhooks.h"#include "target.h"#include "except.h"

Go to the source code of this file.
Data Types | |
| type | arg_data |
Defines | |
| #define | FUNCTION_OK_FOR_SIBCALL(DECL) 1 |
| #define | PUSH_ARGS_REVERSED 0 |
| #define | STACK_POINTER_OFFSET 0 |
| #define | STACK_BYTES (PREFERRED_STACK_BOUNDARY / BITS_PER_UNIT) |
| #define | ECF_CONST 1 |
| #define | ECF_NORETURN 2 |
| #define | ECF_MALLOC 4 |
| #define | ECF_MAY_BE_ALLOCA 8 |
| #define | ECF_NOTHROW 16 |
| #define | ECF_RETURNS_TWICE 32 |
| #define | ECF_LONGJMP 64 |
| #define | ECF_FORK_OR_EXEC 128 |
| #define | ECF_SIBCALL 256 |
| #define | ECF_PURE 512 |
| #define | ECF_SP_DEPRESSED 1024 |
| #define | ECF_ALWAYS_RETURN 2048 |
| #define | ECF_LIBCALL_BLOCK 4096 |
Functions/Subroutines | |
| static int calls_function | PARAMS ((tree, int)) |
| static void emit_call_1 | PARAMS ((rtx, tree, tree, HOST_WIDE_INT, HOST_WIDE_INT, HOST_WIDE_INT, rtx, rtx, int, rtx, int, CUMULATIVE_ARGS *)) |
| static void precompute_register_parameters | PARAMS ((int, struct arg_data *, int *)) |
| static int store_one_arg | PARAMS ((struct arg_data *, rtx, int, int, int)) |
| static void store_unaligned_arguments_into_pseudos | PARAMS ((struct arg_data *, int)) |
| static int finalize_must_preallocate | PARAMS ((int, int, struct arg_data *, struct args_size *)) |
| static void precompute_arguments | PARAMS ((int, int, struct arg_data *)) |
| static int compute_argument_block_size | PARAMS ((int, struct args_size *, int)) |
| static void initialize_argument_information | PARAMS ((int, struct arg_data *, struct args_size *, int, tree, tree, CUMULATIVE_ARGS *, int, rtx *, int *, int *, int *)) |
| static void compute_argument_addresses | PARAMS ((struct arg_data *, rtx, int)) |
| static rtx rtx_for_function_call | PARAMS ((tree, tree)) |
| static void load_register_parameters | PARAMS ((struct arg_data *, int, rtx *, int)) |
| static rtx emit_library_call_value_1 | PARAMS ((int, rtx, rtx, enum libcall_type, enum machine_mode, int, va_list)) |
| static int flags_from_decl_or_type | PARAMS ((tree)) |
| static rtx try_to_integrate | PARAMS ((tree, tree, rtx, int, tree, rtx)) |
| static int check_sibcall_argument_overlap_1 | PARAMS ((rtx)) |
| static int check_sibcall_argument_overlap | PARAMS ((rtx, struct arg_data *)) |
| static int | calls_function (tree exp, int which) |
| static int | calls_function_1 (tree exp, int which) |
| rtx | prepare_call_address (rtx funexp, tree fndecl, rtx *call_fusage, int reg_parm_seen, int sibcallp) |
| static void | emit_call_1 (rtx funexp, fndecl, funtype, stack_size, HOST_WIDE_INT rounded_stack_size, struct_value_size, next_arg_reg, rtx valreg, int old_inhibit_defer_pop, rtx call_fusage, int ecf_flags, args_so_far) |
| static int | special_function_p (tree fndecl, int flags) |
| int | setjmp_call_p (tree fndecl) |
| bool | alloca_call_p (tree exp) |
| static int | flags_from_decl_or_type (tree exp) |
| static void | precompute_register_parameters (int num_actuals, struct arg_data *args, int *reg_parm_seen) |
| static void | store_unaligned_arguments_into_pseudos (struct arg_data *args, int num_actuals) |
| static void | initialize_argument_information (num_actuals, struct arg_data *args, struct args_size *args_size, n_named_args, tree actparms, tree fndecl, CUMULATIVE_ARGS *args_so_far, int reg_parm_stack_space, rtx *old_stack_level, int *old_pending_adj, int *must_preallocate, int *ecf_flags) |
| static int | compute_argument_block_size (int reg_parm_stack_space, struct args_size *args_size, preferred_stack_boundary) |
| static void | precompute_arguments (int flags, int num_actuals, struct arg_data *args) |
| static int | finalize_must_preallocate (int must_preallocate, int num_actuals, struct arg_data *args, struct args_size *args_size) |
| static void | compute_argument_addresses (struct arg_data *args, rtx argblock, int num_actuals) |
| static rtx | rtx_for_function_call (tree fndecl, tree addr) |
| static void | load_register_parameters (struct arg_data *args, int num_actuals, rtx *call_fusage, int flags) |
| static rtx | try_to_integrate (tree fndecl, tree actparms, rtx target, int ignore, tree type, rtx structure_value_addr) |
| static int | combine_pending_stack_adjustment_and_call (int unadjusted_args_size, struct args_size *args_size, int preferred_unit_stack_boundary) |
| static int | check_sibcall_argument_overlap_1 (rtx x) |
| static int | check_sibcall_argument_overlap (rtx insn, struct arg_data *arg) |
| static tree | fix_unsafe_tree (tree t) |
| rtx | expand_call (tree exp, rtx target, int ignore) |
| static rtx | emit_library_call_value_1 (int retval, rtx orgfun, rtx value, enum libcall_type fn_type, enum machine_mode outmode, int nargs, va_list p) |
| void emit_library_call | VPARAMS ((rtx orgfun, enum libcall_type fn_type, enum machine_mode outmode, int nargs,...)) |
| rtx emit_library_call_value | VPARAMS ((rtx orgfun, rtx value, enum libcall_type fn_type, enum machine_mode outmode, int nargs,...)) |
| static int | store_one_arg (struct arg_data *arg, rtx argblock, int flags, variable_size, int reg_parm_stack_space) |
Variables | |
| static char * | stack_usage_map |
| static int | highest_outgoing_arg_in_use |
| static sbitmap | stored_args_map |
| int | stack_arg_under_construction |
| static tree | calls_function_save_exprs |
| #define ECF_ALWAYS_RETURN 2048 |
Definition at line 195 of file calls.c.
Referenced by emit_call_1(), emit_library_call_value_1(), and need_fake_edge_p().
| #define ECF_CONST 1 |
Definition at line 171 of file calls.c.
Referenced by add_call_clobber_ops(), build3_stat(), build_common_builtin_nodes(), can_value_number_call(), check_replaceable(), emit_call_1(), emit_library_call_value_1(), execute_fixup_cfg(), expand_call(), find_data_references_in_loop(), flags_from_decl_or_type(), generate_ctor_or_dtor_function(), get_call_expr_operands(), gimplify_call_expr(), initialize_argument_information(), local_define_builtin(), operand_equal_p(), single_reachable_address(), and update_call_expr_flags().
| #define ECF_FORK_OR_EXEC 128 |
| #define ECF_LIBCALL_BLOCK 4096 |
Definition at line 197 of file calls.c.
Referenced by emit_library_call_value_1(), expand_call(), flags_from_decl_or_type(), initialize_argument_information(), and precompute_arguments().
| #define ECF_LONGJMP 64 |
Definition at line 183 of file calls.c.
Referenced by emit_call_1(), emit_library_call_value_1(), expand_call(), and special_function_p().
| #define ECF_MALLOC 4 |
Definition at line 175 of file calls.c.
Referenced by add_pointed_to_expr(), build_common_builtin_nodes(), check_call(), expand_call(), find_func_aliases(), flags_from_decl_or_type(), get_constraint_for(), local_define_builtin(), special_function_p(), and WFE_Expand_Expr().
| #define ECF_MAY_BE_ALLOCA 8 |
Definition at line 177 of file calls.c.
Referenced by add_pointed_to_expr(), alloca_call_p(), calls_function_1(), expand_call(), find_func_aliases(), get_constraint_for(), notice_special_calls(), special_function_p(), and store_one_arg().
| #define ECF_NORETURN 2 |
Definition at line 173 of file calls.c.
Referenced by block_may_fallthru(), build_common_builtin_nodes(), check_replaceable(), emit_call_1(), emit_library_call_value_1(), expand_call(), flags_from_decl_or_type(), get_call_expr_operands(), is_ctrl_altering_stmt(), local_define_builtin(), make_edges(), make_exit_edges(), need_fake_edge_p(), noreturn_call_p(), special_function_p(), tree_bb_level_predictions(), and WFE_Expand_Expr().
| #define ECF_NOTHROW 16 |
Definition at line 179 of file calls.c.
Referenced by build_common_builtin_nodes(), emit_call_1(), emit_library_call_value_1(), expand_call(), flags_from_decl_or_type(), local_define_builtin(), and tree_could_throw_p().
| #define ECF_PURE 512 |
Definition at line 190 of file calls.c.
Referenced by add_call_clobber_ops(), build3_stat(), build_common_builtin_nodes(), can_value_number_call(), check_call(), check_replaceable(), emit_call_1(), emit_library_call_value_1(), execute_fixup_cfg(), expand_call(), find_data_references_in_loop(), flags_from_decl_or_type(), generate_ctor_or_dtor_function(), get_call_expr_operands(), gimplify_call_expr(), initialize_argument_information(), local_define_builtin(), operand_equal_p(), update_call_expr_flags(), and WFE_Expand_Expr().
| #define ECF_RETURNS_TWICE 32 |
Definition at line 181 of file calls.c.
Referenced by emit_call_1(), emit_library_call_value_1(), expand_call(), flags_from_decl_or_type(), notice_special_calls(), setjmp_call_p(), and special_function_p().
| #define ECF_SIBCALL 256 |
Definition at line 187 of file calls.c.
Referenced by emit_call_1(), expand_call(), load_register_parameters(), and store_one_arg().
| #define ECF_SP_DEPRESSED 1024 |
Definition at line 193 of file calls.c.
Referenced by emit_call_1(), expand_call(), and flags_from_decl_or_type().
| #define FUNCTION_OK_FOR_SIBCALL | ( | DECL | ) | 1 |
| #define PUSH_ARGS_REVERSED 0 |
Definition at line 73 of file calls.c.
Referenced by emit_library_call_value_1(), expand_call(), gimplify_call_expr(), and initialize_argument_information().
| #define STACK_BYTES (PREFERRED_STACK_BOUNDARY / BITS_PER_UNIT) |
Definition at line 81 of file calls.c.
Referenced by assign_parm_find_entry_rtl(), assign_parms(), emit_library_call_value_1(), and layout_mcore_frame().
| #define STACK_POINTER_OFFSET 0 |
Definition at line 77 of file calls.c.
Referenced by emit_library_call_value_1(), instantiate_virtual_regs(), pad_to_arg_alignment(), rtx_addr_can_trap_p_1(), s390_arg_frame_offset(), s390_back_chain_rtx(), s390_emit_epilogue(), s390_emit_prologue(), s390_fallback_frame_state(), s390_frame_info(), s390_initial_elimination_offset(), and s390_va_start().
Definition at line 826 of file calls.c.
Referenced by find_alloca_call_1(), inline_forbidden_p_1(), record_equivalences_from_stmt(), and tree_expr_nonzero_warnv_p().
| static int calls_function | ( | tree | exp, | |
| int | which | |||
| ) | [static] |
Definition at line 261 of file calls.c.
References calls_function_1(), and val.
Referenced by precompute_arguments().
| static int calls_function_1 | ( | tree | exp, | |
| int | which | |||
| ) | [static] |
Definition at line 276 of file calls.c.
References b, BLOCK, BLOCK_SUBBLOCKS, BLOCK_VARS, CONSTRUCTOR_ELTS, DECL_INITIAL, ECF_MAY_BE_ALLOCA, first_rtl_op(), i, IS_EXPR_CODE_CLASS, length, NULL_TREE, NUM_TREE_CODES, r, SAVE_EXPR_RTL, special_function_p(), TREE_CHAIN, TREE_CODE, TREE_CODE_CLASS, tree_cons, TREE_OPERAND, TREE_TYPE, TREE_VALUE, TYPE_RETURNS_STACK_DEPRESSED, and value_member().
Referenced by calls_function(), and calls_function_1().
Definition at line 2086 of file calls.c.
References check_sibcall_argument_overlap_1(), args_size::constant, get_insns(), high, INSN_P, low, NEXT_INSN, NULL_RTX, PATTERN, SET_BIT, arg_data::size, and arg_data::slot_offset.
Referenced by expand_call(), and load_register_parameters().
| static int check_sibcall_argument_overlap_1 | ( | rtx | x | ) | [static] |
Definition at line 2023 of file calls.c.
References current_function_internal_arg_pointer, GET_CODE, GET_MODE, GET_MODE_SIZE, GET_RTX_FORMAT, GET_RTX_LENGTH, INTVAL, MEM, NULL_RTX, PLUS, RTX_CODE, TEST_BIT, XEXP, XVECEXP, and XVECLEN.
Referenced by check_sibcall_argument_overlap(), and check_sibcall_argument_overlap_1().
| static int combine_pending_stack_adjustment_and_call | ( | int | unadjusted_args_size, | |
| struct args_size * | args_size, | |||
| int | preferred_unit_stack_boundary | |||
| ) | [static] |
Definition at line 1967 of file calls.c.
References args_size::constant, HOST_WIDE_INT, pending_stack_adjust, and stack_pointer_delta.
Referenced by expand_call().
| static void compute_argument_addresses | ( | struct arg_data * | args, | |
| rtx | argblock, | |||
| int | num_actuals | |||
| ) | [static] |
Definition at line 1658 of file calls.c.
References addr(), ARGS_SIZE_RTX, gen_rtx_MEM(), gen_rtx_PLUS, GET_CODE, INTVAL, mode, offset, PARM_BOUNDARY, PLUS, plus_constant, Pmode, set_mem_alias_set(), set_mem_align(), set_mem_attributes(), stack, TREE_TYPE, and XEXP.
Referenced by expand_call().
| static int compute_argument_block_size | ( | int | reg_parm_stack_space, | |
| struct args_size * | args_size, | |||
| preferred_stack_boundary | ||||
| ) | [static] |
Definition at line 1437 of file calls.c.
References abort, ACCUMULATE_OUTGOING_ARGS, ARGS_SIZE_TREE, BITS_PER_UNIT, args_size::constant, MAX, round_up(), size_binop(), ssize_int, STACK_BOUNDARY, stack_pointer_delta, and args_size::var.
Referenced by expand_call().
| static void emit_call_1 | ( | rtx | funexp, | |
| fndecl | , | |||
| funtype | , | |||
| stack_size | , | |||
| HOST_WIDE_INT | rounded_stack_size, | |||
| struct_value_size | , | |||
| next_arg_reg | , | |||
| rtx | valreg, | |||
| int | old_inhibit_defer_pop, | |||
| rtx | call_fusage, | |||
| int | ecf_flags, | |||
| args_so_far | ||||
| ) | [static] |
Definition at line 464 of file calls.c.
References abort, ACCUMULATE_OUTGOING_ARGS, adjust_stack(), anti_adjust_stack(), CALL_INSN_FUNCTION_USAGE, CALL_POPS_ARGS, const0_rtx, CONST_OR_PURE_CALL_P, current_function_calls_setjmp, ECF_ALWAYS_RETURN, ECF_CONST, ECF_LONGJMP, ECF_NORETURN, ECF_NOTHROW, ECF_PURE, ECF_RETURNS_TWICE, ECF_SIBCALL, ECF_SP_DEPRESSED, emit_call_insn(), flag_defer_pop, FUNCTION_MODE, GEN_CALL, GEN_CALL_POP, GEN_CALL_VALUE, GEN_CALL_VALUE_POP, GEN_INT, gen_rtx_CLOBBER, gen_rtx_EXPR_LIST, gen_rtx_MEM(), gen_rtx_SCRATCH, gen_rtx_USE, GEN_SIBCALL, GEN_SIBCALL_VALUE, GET_CODE, get_last_insn(), HAVE_call, HAVE_call_pop, HAVE_call_value, HAVE_call_value_pop, HAVE_sibcall, HAVE_sibcall_value, HOST_WIDE_INT, inhibit_defer_pop, memory_address(), note_eh_region_may_contain_throw(), NULL_RTX, pending_stack_adjust, PREV_INSN, REG_ALWAYS_RETURN, REG_EH_REGION, REG_NORETURN, REG_NOTES, REG_SETJMP, RETURN_POPS_ARGS, SIBLING_CALL_P, stack_pointer_delta, stack_pointer_rtx, and XEXP.
Referenced by emit_library_call_value_1(), and expand_call().
| static rtx emit_library_call_value_1 | ( | int | retval, | |
| rtx | orgfun, | |||
| rtx | value, | |||
| enum libcall_type | fn_type, | |||
| enum machine_mode | outmode, | |||
| int | nargs, | |||
| va_list | p | |||
| ) | [static] |
Definition at line 3508 of file calls.c.
References abort, ACCUMULATE_OUTGOING_ARGS, addr(), aggregate_value_p(), alloca, anti_adjust_stack(), ARGS_SIZE_RTX, assemble_external_libcall(), assign_stack_temp(), assign_temp(), BIGGEST_ALIGNMENT, BITS_PER_UNIT, BLOCK_OP_CALL_PARM, build1, build_function_type(), build_pointer_type(), cfun, args_size::constant, CONSTANT_P, convert_modes(), count, current_function_outgoing_args_size, ECF_ALWAYS_RETURN, ECF_CONST, ECF_LIBCALL_BLOCK, ECF_LONGJMP, ECF_NORETURN, ECF_NOTHROW, ECF_PURE, ECF_RETURNS_TWICE, emit_barrier_after(), emit_block_move(), emit_call_1(), emit_group_load(), emit_group_store(), emit_insn(), emit_libcall_block(), emit_move_insn(), emit_push_insn(), end_sequence(), expand_expr(), FINAL_REG_PARM_STACK_SPACE, flags, force_operand(), force_reg(), FUNCTION_ARG, FUNCTION_ARG_ADVANCE, FUNCTION_ARG_CALLEE_COPIES, FUNCTION_ARG_PARTIAL_NREGS, FUNCTION_ARG_PASS_BY_REFERENCE, GEN_INT, gen_reg_rtx(), gen_rtx_CLOBBER, gen_rtx_EXPR_LIST, gen_rtx_MEM(), gen_rtx_SCRATCH, gen_rtx_USE, GET_CODE, get_identifier(), get_insns(), get_last_insn(), GET_MODE, GET_MODE_SIZE, hard_function_value(), hard_libcall_value(), highest_outgoing_arg_in_use, inhibit_defer_pop, INIT_CUMULATIVE_ARGS, INIT_CUMULATIVE_LIBCALL_ARGS, insns, last, LCT_ALWAYS_RETURN, LCT_CONST, LCT_CONST_MAKE_BLOCK, LCT_NORETURN, LCT_NORMAL, LCT_PURE, LCT_PURE_MAKE_BLOCK, LCT_RETURNS_TWICE, LCT_THROW, LEGITIMATE_CONSTANT_P, LIBGCC_NEEDS_DOUBLE, locate_and_pad_parm(), make_tree(), MAX, MAYBE_REG_PARM_STACK_SPACE, MEM, memcpy, memory_address(), memset, MIN, mode, mode_for_size(), MODE_INT, NO_DEFER_POP, NULL_RTX, NULL_TREE, offset, OK_DEFER_POP, PARM_BOUNDARY, plus_constant, Pmode, pop_temp_slots(), PREFERRED_STACK_BOUNDARY, prepare_call_address(), PREV_INSN, PUSH_ARGS, PUSH_ARGS_REVERSED, push_block(), push_temp_slots(), REG, REG_PARM_STACK_SPACE, set_mem_align(), size, STACK_BYTES, STACK_PARMS_IN_REG_PARM_AREA, stack_pointer_delta, STACK_POINTER_OFFSET, stack_pointer_rtx, stack_usage_map, start_sequence(), UNITS_PER_WORD, use_group_regs(), use_reg(), va_arg, val, validize_mem(), args_size::var, virtual_outgoing_args_rtx, virtuals_instantiated, void_type_node, XEXP, and XSTR.
Referenced by emit_library_call(), emit_library_call_value(), and VPARAMS().
Definition at line 2149 of file calls.c.
Referenced by c_expand_builtin(), expand_builtin(), expand_builtin_fork_or_exec(), expand_builtin_mathfn(), expand_builtin_mathfn_2(), expand_builtin_mathfn_3(), expand_builtin_memset(), expand_builtin_strcmp(), expand_builtin_strncmp(), expand_errno_check(), expand_expr(), and expand_expr_real_1().
| static int finalize_must_preallocate | ( | int | must_preallocate, | |
| int | num_actuals, | |||
| struct arg_data * | args, | |||
| struct args_size * | args_size | |||
| ) | [static] |
Definition at line 1595 of file calls.c.
References args_size::constant, int_size_in_bytes(), TREE_ADDRESSABLE, TREE_CODE, TREE_TYPE, and TYPE_MODE.
Referenced by expand_call().
Definition at line 2114 of file calls.c.
References abort, build_decl, expand_expr(), EXPAND_NORMAL, NULL_RTX, NULL_TREE, SET_DECL_RTL, TREE_TYPE, unsafe_for_reeval(), unsave_expr(), and args_size::var.
Referenced by expand_call().
| static int flags_from_decl_or_type | ( | tree | exp | ) | [static] |
Definition at line 842 of file calls.c.
References DECL_IS_MALLOC, DECL_IS_PURE, DECL_P, ECF_CONST, ECF_LIBCALL_BLOCK, ECF_MALLOC, ECF_NORETURN, ECF_NOTHROW, ECF_PURE, ECF_SP_DEPRESSED, flags, TREE_CODE, TREE_NOTHROW, TREE_READONLY, TREE_THIS_VOLATILE, TREE_TYPE, and TYPE_RETURNS_STACK_DEPRESSED.
Referenced by call_expr_flags(), expand_call(), generate_ctor_or_dtor_function(), and WFE_Expand_Expr().
| static void initialize_argument_information | ( | num_actuals | , | |
| struct arg_data * | args, | |||
| struct args_size * | args_size, | |||
| n_named_args | , | |||
| tree | actparms, | |||
| tree | fndecl, | |||
| CUMULATIVE_ARGS * | args_so_far, | |||
| int | reg_parm_stack_space, | |||
| rtx * | old_stack_level, | |||
| int * | old_pending_adj, | |||
| int * | must_preallocate, | |||
| int * | ecf_flags | |||
| ) | [static] |
Definition at line 1153 of file calls.c.
References ADD_PARM_SIZE, arg_data::alignment_pad, allocate_dynamic_stack_space(), assign_temp(), BITS_PER_UNIT, build1, build_pointer_type(), compare_tree_int(), COMPLETE_TYPE_P, args_size::constant, contains_placeholder_p(), copy, current_function_is_thunk, DECL_P, DECL_RTL, ECF_CONST, ECF_LIBCALL_BLOCK, ECF_PURE, emit_stack_save(), error_mark_node, expr_size(), flag_stack_check, FUNCTION_ARG, FUNCTION_ARG_ADVANCE, FUNCTION_ARG_CALLEE_COPIES, FUNCTION_ARG_PARTIAL_NREGS, FUNCTION_ARG_PASS_BY_REFERENCE, FUNCTION_INCOMING_ARG, gen_rtx_MEM(), GET_CODE, integer_type_node, integer_zero_node, locate_and_pad_parm(), make_tree(), arg_data::mode, mode, MUST_PASS_IN_STACK, NULL_RTX, offset, p, PARM_BOUNDARY, arg_data::partial, arg_data::pass_on_stack, pending_stack_adjust, promote_mode(), PUSH_ARGS_REVERSED, arg_data::reg, REG_P, SAVE_BLOCK, set_mem_attributes(), arg_data::size, size, arg_data::slot_offset, STACK_CHECK_BUILTIN, STACK_CHECK_MAX_VAR_SIZE, STACK_PARMS_IN_REG_PARM_AREA, store_expr(), SUB_PARM_SIZE, arg_data::tail_call_reg, TREE_ADDRESSABLE, TREE_CHAIN, TREE_CODE, TREE_OPERAND, TREE_TYPE, TREE_UNSIGNED, arg_data::tree_value, TREE_VALUE, TYPE_ALIGN, TYPE_FIELDS, TYPE_MODE, TYPE_SIZE, TYPE_SIZE_UNIT, TYPE_TRANSPARENT_UNION, UNITS_PER_WORD, arg_data::unsignedp, args_size::var, XEXP, and XVECEXP.
Referenced by expand_call().
| static void load_register_parameters | ( | struct arg_data * | args, | |
| int | num_actuals, | |||
| rtx * | call_fusage, | |||
| int | flags | |||
| ) | [static] |
Definition at line 1763 of file calls.c.
References ECF_SIBCALL, emit_group_load(), emit_move_insn(), gen_rtx_REG(), GET_CODE, int_size_in_bytes(), mode, move_block_to_reg(), nregs, REGNO, TREE_TYPE, TYPE_MODE, UNITS_PER_WORD, use_group_regs(), use_reg(), use_regs(), validize_mem(), and word_mode.
Referenced by expand_call().
| static int check_sibcall_argument_overlap_1 PARAMS | ( | (rtx) | ) | [static] |
| static int flags_from_decl_or_type PARAMS | ( | (tree) | ) | [static] |
| static rtx emit_library_call_value_1 PARAMS | ( | (int, rtx, rtx, enum libcall_type, enum machine_mode, int, va_list) | ) | [static] |
| static void initialize_argument_information PARAMS | ( | (int, struct arg_data *, struct args_size *, int, tree, tree, CUMULATIVE_ARGS *, int, rtx *, int *, int *, int *) | ) | [static] |
| static int finalize_must_preallocate PARAMS | ( | (int, int, struct arg_data *, struct args_size *) | ) | [static] |
| static void emit_call_1 PARAMS | ( | (rtx, tree, tree, HOST_WIDE_INT, HOST_WIDE_INT, HOST_WIDE_INT, rtx, rtx, int, rtx, int, CUMULATIVE_ARGS *) | ) | [static] |
| static int calls_function PARAMS | ( | (tree, int) | ) | [static] |
Definition at line 1524 of file calls.c.
References abort, ACCUMULATE_OUTGOING_ARGS, calls_function(), convert_modes(), ECF_LIBCALL_BLOCK, emit_queue(), expand_expr(), gen_lowpart_SUBREG(), GET_CODE, GET_MODE_CLASS, arg_data::initial_value, mode, MODE_INT, NULL_RTX, protect_from_queue(), REG, SUBREG_PROMOTED_UNSIGNED_SET, SUBREG_PROMOTED_VAR_P, TREE_ADDRESSABLE, TREE_TYPE, TYPE_MODE, and arg_data::value.
Referenced by expand_call().
| static void precompute_register_parameters | ( | int | num_actuals, | |
| struct arg_data * | args, | |||
| int * | reg_parm_seen | |||
| ) | [static] |
Definition at line 892 of file calls.c.
References CONSTANT_P, convert_modes(), copy_to_mode_reg(), COSTS_N_INSNS, emit_queue(), expand_expr(), force_reg(), GET_CODE, i, LEGITIMATE_CONSTANT_P, mode, NULL_RTX, pop_temp_slots(), preserve_subexpressions_p(), preserve_temp_slots(), push_temp_slots(), REG, rtx_cost(), SET, SMALL_REGISTER_CLASSES, SUBREG_REG, TREE_TYPE, TYPE_MODE, and arg_data::value.
Referenced by expand_call().
| rtx prepare_call_address | ( | rtx | funexp, | |
| tree | fndecl, | |||
| rtx * | call_fusage, | |||
| int | reg_parm_seen, | |||
| int | sibcallp | |||
| ) |
Definition at line 378 of file calls.c.
References current_function_decl, emit_move_insn(), flag_no_function_cse, force_not_mem(), force_reg(), FUNCTION_MODE, GET_CODE, lookup_static_chain(), memory_address(), optimize, Pmode, protect_from_queue(), REG, SMALL_REGISTER_CLASSES, and use_reg().
Referenced by emit_library_call_value_1(), expand_builtin_apply(), and expand_call().
Definition at line 1722 of file calls.c.
References assemble_external(), DECL_RTL, emit_queue(), expand_expr(), NULL_RTX, pop_temp_slots(), push_temp_slots(), TREE_USED, and XEXP.
Referenced by expand_call().
| int setjmp_call_p | ( | tree | fndecl | ) |
Definition at line 818 of file calls.c.
Referenced by calls_setjmp_r(), check_call(), inline_forbidden_p(), and inline_forbidden_p_1().
| static int special_function_p | ( | tree | fndecl, | |
| int | flags | |||
| ) | [static] |
Definition at line 723 of file calls.c.
References DECL_CONTEXT, DECL_NAME, ECF_FORK_OR_EXEC, ECF_LONGJMP, ECF_MALLOC, ECF_MAY_BE_ALLOCA, ECF_RETURNS_TWICE, IDENTIFIER_LENGTH, IDENTIFIER_POINTER, NULL_TREE, Pmode, strcmp(), TREE_PUBLIC, TREE_TYPE, and TYPE_MODE.
Referenced by alloca_call_p(), calls_function_1(), expand_call(), flags_from_decl_or_type(), same_signature_p(), and setjmp_call_p().
| static int store_one_arg | ( | struct arg_data * | arg, | |
| rtx | argblock, | |||
| int | flags, | |||
| variable_size | , | |||
| int | reg_parm_stack_space | |||
| ) | [static] |
Definition at line 4417 of file calls.c.
References abort, ACCUMULATE_OUTGOING_ARGS, ARGS_SIZE_RTX, assign_temp(), BITS_PER_UNIT, BLOCK_OP_CALL_PARM, build_qualified_type(), convert_modes(), current_function_internal_arg_pointer, do_pending_stack_adjust(), downward, ECF_MAY_BE_ALLOCA, ECF_SIBCALL, emit_block_move(), emit_move_insn(), emit_push_insn(), emit_queue(), expand_expr(), EXPAND_STACK_PARM, expr_size(), free_temp_slots(), FUNCTION_ARG_PADDING, gen_reg_rtx(), gen_rtx_MEM(), GET_CODE, GET_MODE_SIZE, int_size_in_bytes(), INTVAL, MAX, MEM, memory_address(), MIN, mode_for_size(), MODE_INT, NO_DEFER_POP, none, NULL_RTX, offset, PARM_BOUNDARY, PLUS, pop_temp_slots(), preserve_temp_slots(), PUSH_ROUNDING, push_temp_slots(), size, size_in_bytes(), sizetype, stack_arg_under_construction, stack_usage_map, TREE_CODE, TREE_TYPE, TYPE_ALIGN, TYPE_MODE, TYPE_QUAL_CONST, TYPE_QUALS, UNITS_PER_WORD, validize_mem(), variable_size(), x, and XEXP.
Referenced by expand_call().
| static void store_unaligned_arguments_into_pseudos | ( | struct arg_data * | args, | |
| int | num_actuals | |||
| ) | [static] |
Definition at line 1070 of file calls.c.
References BIGGEST_ALIGNMENT, BITS_PER_UNIT, BITS_PER_WORD, bytes, BYTES_BIG_ENDIAN, const0_rtx, emit_move_insn(), extract_bit_field(), gen_reg_rtx(), int_size_in_bytes(), MIN, mode, NULL_RTX, operand_subword_force(), store_bit_field(), TREE_TYPE, TYPE_ALIGN, UNITS_PER_WORD, word_mode, and xmalloc().
Referenced by expand_call().
| static rtx try_to_integrate | ( | tree | fndecl, | |
| tree | actparms, | |||
| rtx | target, | |||
| int | ignore, | |||
| tree | type, | |||
| rtx | structure_value_addr | |||
| ) | [static] |
Definition at line 1837 of file calls.c.
References ACCUMULATE_OUTGOING_ARGS, allocate_dynamic_stack_space(), BITS_PER_UNIT, DECL_INLINE, DECL_SAVED_INSNS, emit_insn_before(), emit_stack_restore(), emit_stack_save(), end_sequence(), expand_inline_function(), first_insn, flag_no_inline, GEN_INT, GET_CODE, get_insns(), get_last_insn(), highest_outgoing_arg_in_use, HOST_WIDE_INT, insn, MAYBE_REG_PARM_STACK_SPACE, NEXT_INSN, NULL_RTX, optimize, REG_PARM_STACK_SPACE, rtx_equal_p(), SAVE_BLOCK, size_t, stack_arg_under_construction, stack_usage_map, start_sequence(), timevar_pop, timevar_push, TREE_ADDRESSABLE, warn_inline, and warning.
Referenced by expand_call().
| rtx emit_library_call_value VPARAMS | ( | (rtx orgfun, rtx value,enum libcall_type fn_type,enum machine_mode outmode, int nargs,...) | ) |
Definition at line 4366 of file calls.c.
References emit_library_call_value_1(), p, result, VA_CLOSE, va_end, VA_FIXEDARG, VA_OPEN, and VA_START.
| void emit_library_call VPARAMS | ( | (rtx orgfun, enum libcall_type fn_type,enum machine_mode outmode, int nargs,...) | ) |
Definition at line 4333 of file calls.c.
References emit_library_call_value_1(), NULL_RTX, p, VA_CLOSE, va_end, VA_FIXEDARG, VA_OPEN, and VA_START.
tree calls_function_save_exprs [static] |
int highest_outgoing_arg_in_use [static] |
Definition at line 151 of file calls.c.
Referenced by emit_library_call_value_1(), expand_call(), and try_to_integrate().
Definition at line 165 of file calls.c.
Referenced by expand_call(), store_one_arg(), and try_to_integrate().
char* stack_usage_map [static] |
Definition at line 148 of file calls.c.
Referenced by emit_library_call_value_1(), expand_call(), store_one_arg(), and try_to_integrate().
sbitmap stored_args_map [static] |
1.5.6