#include "config.h"#include "system.h"#include "coretypes.h"#include "tm.h"#include "rtl.h"#include "tree.h"#include "tm_p.h"#include "flags.h"#include "except.h"#include "function.h"#include "insn-config.h"#include "expr.h"#include "libfuncs.h"#include "hard-reg-set.h"#include "recog.h"#include "machmode.h"#include "toplev.h"#include "output.h"#include "ggc.h"#include "langhooks.h"#include "predict.h"#include "optabs.h"#include "target.h"#include "regs.h"

Go to the source code of this file.
| #define CASE_USE_BIT_TESTS |
Value:
(ashl_optab->handlers[word_mode].insn_code \ != CODE_FOR_nothing)
Definition at line 2130 of file stmt.c.
Referenced by expand_case().
| #define COST_TABLE | ( | I | ) | cost_table_[(unsigned HOST_WIDE_INT) ((I) + 1)] |
| typedef struct case_node* case_node_ptr |
| static struct case_node * add_case_node | ( | struct case_node * | head, | |
| tree | type, | |||
| tree | low, | |||
| tree | high, | |||
| tree | label | |||
| ) | [static, read] |
Definition at line 2063 of file stmt.c.
References fold_convert(), gcc_assert, ggc_alloc, NULL, r, TREE_CODE, tree_int_cst_compare(), tree_int_cst_equal(), TYPE_MAX_VALUE, and TYPE_MIN_VALUE.
| static void balance_case_nodes | ( | case_node_ptr * | head, | |
| case_node_ptr | parent | |||
| ) | [static] |
Definition at line 2684 of file stmt.c.
References balance_case_nodes(), COST_TABLE, i, tree_int_cst_equal(), TREE_INT_CST_LOW, and use_cost_table.
Definition at line 2174 of file stmt.c.
References case_bit_test::bits, d1, and d2.
Referenced by emit_case_bit_tests().
Definition at line 1098 of file stmt.c.
References error(), MAX_RECOG_ALTERNATIVES, n_occurrences, next, tmp, TREE_CHAIN, TREE_PURPOSE, TREE_STRING_POINTER, and TREE_VALUE.
Definition at line 1142 of file stmt.c.
References error(), failure, i, simple_cst_equal(), TREE_CHAIN, TREE_PURPOSE, and TREE_STRING_POINTER.
| static bool decl_conflicts_with_clobbers_p | ( | tree | decl, | |
| const HARD_REG_SET | clobbered_regs | |||
| ) | [static] |
Definition at line 566 of file stmt.c.
References DECL_NAME, DECL_REGISTER, DECL_RTL, error(), FIRST_PSEUDO_REGISTER, GET_MODE, hard_regno_nregs, IDENTIFIER_POINTER, REG_P, REGNO, TEST_HARD_REG_BIT, and TREE_CODE.
Definition at line 2580 of file stmt.c.
References emit_cmp_and_jump_insns(), emit_jump(), EQ, GET_CODE, GET_MODE, and NULL_RTX.
| static void emit_case_bit_tests | ( | tree | index_type, | |
| tree | index_expr, | |||
| tree | minval, | |||
| tree | range, | |||
| case_node_ptr | nodes, | |||
| rtx | default_label | |||
| ) | [static] |
Definition at line 2198 of file stmt.c.
References and_optab, ashl_optab, case_bit_test::bits, build2, case_bit_test_cmp(), const0_rtx, const1_rtx, convert_to_mode(), count, do_pending_stack_adjust(), emit_cmp_and_jump_insns(), emit_jump(), expand_binop(), expand_expr(), fold(), fold_convert(), gcc_assert, case_bit_test::hi, HOST_BITS_PER_INT, HOST_BITS_PER_WIDE_INT, HOST_WIDE_INT, i, immed_double_const(), index(), case_bit_test::label, label_rtx(), case_bit_test::lo, lo, mode, n, NE, NULL_RTX, OPTAB_WIDEN, qsort(), tree_low_cst(), TYPE_MODE, and word_mode.
Referenced by expand_case().
| static void emit_case_nodes | ( | rtx | index, | |
| case_node_ptr | node, | |||
| rtx | default_label, | |||
| tree | index_type | |||
| ) | [static] |
Definition at line 2923 of file stmt.c.
References build1, build2, build_decl, convert_modes(), do_jump_if_equal(), emit_case_nodes(), emit_cmp_and_jump_insns(), emit_jump(), expand_expr(), expand_label(), expand_simple_binop(), fold(), GE, GET_MODE, GT, high, label_rtx(), LE, low, LT, MINUS, mode, node_has_high_bound(), node_has_low_bound(), node_is_bounded(), NULL_RTX, NULL_TREE, OPTAB_WIDEN, tree_int_cst_equal(), TYPE_MODE, and TYPE_UNSIGNED.
Definition at line 172 of file stmt.c.
References do_pending_stack_adjust(), emit_barrier(), emit_jump_insn(), and gen_jump().
| static int estimate_case_costs | ( | case_node_ptr | node | ) | [static] |
Definition at line 2618 of file stmt.c.
References build_int_cst(), COST_TABLE, cost_table_initialized, HOST_WIDE_INT, i, INT_CST_LT, integer_minus_one_node, ISALNUM, ISCNTRL, ISPUNCT, n, TREE_INT_CST_LOW, and TREE_TYPE.
Definition at line 2001 of file stmt.c.
References adjust_address_nv, DECL_ALIGN, DECL_MODE, DECL_RTL, DECL_SIZE, DECL_USER_ALIGN, expand_decl(), gcc_assert, gen_lowpart_SUBREG(), GET_MODE, MEM_P, mode, mode_for_size_tree(), MODE_INT, REG_P, SET_DECL_RTL, TREE_ADDRESSABLE, TREE_CHAIN, TREE_TYPE, TREE_USED, TREE_VALUE, TYPE_MODE, and x.
Definition at line 264 of file stmt.c.
References emit_insn(), gen_rtx_ASM_INPUT, ggc_strdup, MEM_VOLATILE_P, TREE_CODE, TREE_OPERAND, and TREE_STRING_POINTER.
Definition at line 1052 of file stmt.c.
Referenced by expand_builtin_synchronize(), and expand_expr_real_1().
| static void expand_asm_operands | ( | tree | string, | |
| tree | outputs, | |||
| tree | inputs, | |||
| tree | clobbers, | |||
| int | vol, | |||
| location_t | locus | |||
| ) | [static] |
Definition at line 615 of file stmt.c.
References alloca, asm_operand_ok(), ASM_OPERANDS_INPUT, ASM_OPERANDS_INPUT_CONSTRAINT_EXP, ASM_OPERANDS_OUTPUT_CONSTRAINT, assign_temp(), build_qualified_type(), check_operand_nalternatives(), CLEAR_HARD_REG_SET, CONCAT, CONSTANT_P, decl_conflicts_with_clobbers_p(), DECL_P, DECL_RTL, decode_reg_name(), emit_insn(), emit_move_insn(), empty_string, error(), error_mark_node, expand_expr(), EXPAND_MEMORY, EXPAND_NORMAL, EXPAND_WRITE, force_const_mem(), force_reg(), free_temp_slots(), gcc_assert, gen_reg_rtx(), gen_rtx_ASM_INPUT, gen_rtx_ASM_OPERANDS, gen_rtx_CLOBBER, gen_rtx_MEM(), gen_rtx_PARALLEL, gen_rtx_REG(), gen_rtx_SCRATCH, gen_rtx_SET, generating_concat_p, GET_CODE, GET_MODE, ggc_strdup, HARD_REG_SET, i, internal_error(), list_length(), make_tree(), MAX_RECOG_OPERANDS, gcc_target::md_asm_clobbers, mem, MEM_P, MEM_VOLATILE_P, NULL_RTX, ok(), parse_input_constraint(), parse_output_constraint(), PIC_OFFSET_TABLE_REGNUM, reg_overlap_mentioned_p(), REG_P, resolve_asm_operand_names(), rtvec_alloc(), SET_HARD_REG_BIT, SET_SRC, sprintf(), tail, targetm, TREE_CHAIN, TREE_CODE, TREE_PURPOSE, TREE_STRING_POINTER, TREE_TYPE, TREE_VALUE, TYPE_MODE, TYPE_QUAL_CONST, TYPE_QUALS, val, validize_mem(), warning, and XVECEXP.
Definition at line 183 of file stmt.c.
References convert_memory_address(), do_pending_stack_adjust(), emit_indirect_jump(), expand_expr(), NULL_RTX, Pmode, and x.
Definition at line 1829 of file stmt.c.
References addr(), address, allocate_dynamic_stack_space(), assign_temp(), BIGGEST_ALIGNMENT, compare_tree_int(), const0_rtx, DECL_ALIGN, DECL_ARTIFICIAL, DECL_EXTERNAL, DECL_INITIAL, DECL_MODE, DECL_RTL, DECL_RTL_SET_P, DECL_SIZE, DECL_SIZE_UNIT, DECL_USER_ALIGN, do_pending_stack_adjust(), emit_move_insn(), error_mark_node, expand_expr(), flag_stack_check, force_operand(), free_temp_slots(), gcc_assert, gen_reg_rtx(), gen_rtx_MEM(), GET_MODE_BITSIZE, mark_reg_pointer(), mark_user_reg(), MEM_P, NULL_RTX, Pmode, POINTER_TYPE_P, promote_mode(), reg_mode, REG_P, SET_DECL_RTL, set_mem_attributes(), size, STACK_BOUNDARY, STACK_CHECK_BUILTIN, STACK_CHECK_MAX_VAR_SIZE, TREE_CODE, TREE_STATIC, TREE_TYPE, TYPE_ALIGN, TYPE_MODE, TYPE_SIZE, TYPE_SIZE_UNIT, TYPE_UNSIGNED, use_register_for_decl(), x, and XEXP.
Definition at line 1322 of file stmt.c.
References const0_rtx, copy_to_reg(), emit_cmp_and_jump_insns(), emit_label(), EQ, expand_expr(), free_temp_slots(), gen_label_rtx(), lab, MEM_P, NULL_RTX, TREE_THIS_VOLATILE, TREE_TYPE, TYPE_MODE, and TYPE_SIZE.
Definition at line 236 of file stmt.c.
References current_function_decl, decl_function_context(), emit_jump(), gcc_assert, and label_rtx().
Definition at line 207 of file stmt.c.
References DECL_NAME, DECL_NONLOCAL, DECL_RTL, do_pending_stack_adjust(), emit_label(), expand_nl_goto_receiver(), FORCED_LABEL, forced_labels, gen_rtx_EXPR_LIST, IDENTIFIER_POINTER, LABEL_NAME, label_rtx(), maybe_set_first_label_num(), and nonlocal_goto_handler_labels.
Definition at line 1758 of file stmt.c.
References ARG_POINTER_REGNUM, ARRAY_SIZE, cfun, copy_to_reg(), ELIMINABLE_REGS, emit_insn(), emit_move_insn(), fixed_regs, gen_rtx_ASM_INPUT, gen_rtx_CLOBBER, gen_rtx_USE, get_arg_pointer_save_area(), HARD_FRAME_POINTER_REGNUM, hard_frame_pointer_rtx, HAVE_nonlocal_goto, i, virtual_incoming_args_rtx, and virtual_stack_vars_rtx.
Definition at line 1475 of file stmt.c.
References clobber_return_register(), and expand_null_return_1().
Definition at line 1538 of file stmt.c.
References clear_pending_stack_adjust(), do_pending_stack_adjust(), emit_jump(), and return_label.
Definition at line 1549 of file stmt.c.
References alloca, assign_temp(), bitpos(), BITS_PER_UNIT, BITS_PER_WORD, build_qualified_type(), bytes, BYTES_BIG_ENDIAN, gcc_target::calls, CONST0_RTX, const0_rtx, current_function_decl, DECL_RESULT, DECL_RTL, dst, emit_move_insn(), error_mark_node, expand_expr(), expand_null_return(), expand_value_return(), extract_bit_field(), force_not_mem(), gcc_assert, gen_lowpart, gen_reg_rtx(), GET_CLASS_NARROWEST_MODE, GET_CODE, GET_MODE, GET_MODE_SIZE, GET_MODE_WIDER_MODE, HOST_WIDE_INT, i, int_size_in_bytes(), MIN, MODE_INT, NULL_RTX, operand_subword(), operand_subword_force(), PUT_MODE, REG_P, gcc_target::calls::return_in_msb, src, store_bit_field(), targetm, TREE_CODE, TREE_OPERAND, TREE_TYPE, TYPE_ALIGN, TYPE_MODE, TYPE_QUAL_CONST, TYPE_QUALS, UNITS_PER_WORD, val, VOID_TYPE_P, and word_mode.
Definition at line 1506 of file stmt.c.
References gcc_target::calls, convert_modes(), current_function_decl, DECL_MODE, DECL_RESULT, DECL_RTL, emit_group_load(), emit_move_insn(), expand_null_return_1(), GET_CODE, int_size_in_bytes(), mode, gcc_target::calls::promote_function_return, promote_mode(), targetm, TREE_TYPE, and TYPE_UNSIGNED.
| int is_body_block | ( | tree | stmt | ) |
Definition at line 133 of file stmt.c.
References DECL_NONLOCAL, DECL_RTL, DECL_RTL_SET_P, FORCED_LABEL, gcc_assert, gen_label_rtx(), LABEL_PRESERVE_P, r, SET_DECL_RTL, and TREE_CODE.
Definition at line 2153 of file stmt.c.
References const1_rtx, COSTS_N_INSNS, gen_rtx_ASHIFT, gen_rtx_REG(), rtx_cost(), SET, and word_mode.
Referenced by expand_case().
| static int n_occurrences | ( | int | c, | |
| const char * | s | |||
| ) | [static] |
| static int node_has_high_bound | ( | case_node_ptr | node, | |
| tree | index_type | |||
| ) | [static] |
Definition at line 2846 of file stmt.c.
References build2, fold(), integer_one_node, NULL, tree_int_cst_equal(), tree_int_cst_lt(), TREE_TYPE, and TYPE_MAX_VALUE.
| static int node_has_low_bound | ( | case_node_ptr | node, | |
| tree | index_type | |||
| ) | [static] |
Definition at line 2801 of file stmt.c.
References build2, fold(), integer_one_node, tree_int_cst_equal(), tree_int_cst_lt(), TREE_TYPE, and TYPE_MIN_VALUE.
| static int node_is_bounded | ( | case_node_ptr | node, | |
| tree | index_type | |||
| ) | [static] |
Definition at line 1184 of file stmt.c.
Referenced by build_asm_expr(), expand_asm_operands(), and finish_asm_stmt().
Definition at line 1261 of file stmt.c.
References c, error(), gcc_assert, len, memmove, q, sprintf(), strchr, strlen(), strncmp(), TREE_CHAIN, TREE_PURPOSE, and TREE_STRING_POINTER.
| int warn_if_unused_value | ( | tree | exp, | |
| location_t | locus | |||
| ) |
short cost_table_[129] [static] |
int cost_table_initialized [static] |
int use_cost_table [static] |
1.5.6