GCC Middle and Back End API Reference
|
Go to the source code of this file.
Data Structures | |
class | saved_pending_stack_adjust |
Functions | |
void | init_pending_stack_adjust (void) |
void | discard_pending_stack_adjust (void) |
void | clear_pending_stack_adjust (void) |
void | do_pending_stack_adjust (void) |
void | save_pending_stack_adjust (saved_pending_stack_adjust *) |
void | restore_pending_stack_adjust (saved_pending_stack_adjust *) |
bool | split_comparison (enum rtx_code, machine_mode, enum rtx_code *, enum rtx_code *) |
void | jumpif (tree exp, rtx_code_label *label, profile_probability prob) |
void | jumpif_1 (enum tree_code, tree, tree, rtx_code_label *, profile_probability) |
void | jumpifnot (tree exp, rtx_code_label *label, profile_probability prob) |
void | jumpifnot_1 (enum tree_code, tree, tree, rtx_code_label *, profile_probability) |
void | do_compare_rtx_and_jump (rtx, rtx, enum rtx_code, int, tree, machine_mode, rtx, rtx_code_label *, rtx_code_label *, profile_probability) |
void | do_compare_rtx_and_jump (rtx, rtx, enum rtx_code, int, machine_mode, rtx, rtx_code_label *, rtx_code_label *, profile_probability) |
|
extern |
When exiting from function, if safe, clear out any pending stack adjust so the adjustment won't get done.
When exiting from function, if safe, clear out any pending stack adjust so the adjustment won't get done. Note, if the current function calls alloca, then it must have a frame pointer regardless of the value of flag_omit_frame_pointer.
References cfun, discard_pending_stack_adjust(), and EXIT_IGNORE_STACK.
Referenced by expand_function_end(), expand_naked_return(), and expand_null_return_1().
|
extern |
Discard any pending stack adjustment.
Discard any pending stack adjustment. This avoid relying on the RTL optimizers to remove useless adjustments when we know the stack pointer value is dead.
References pending_stack_adjust, and stack_pointer_delta.
Referenced by clear_pending_stack_adjust(), and emit_stack_restore().
|
extern |
Like do_compare_and_jump but expects the values to compare as two rtx's. The decision as to signed or unsigned comparison must be made by the caller. If MODE is BLKmode, SIZE is an RTX giving the size of the objects being compared.
References do_compare_rtx_and_jump(), and NULL.
Referenced by add_test(), compare_and_jump_seq(), do_cmp_and_jump(), do_compare_and_jump(), do_compare_rtx_and_jump(), do_compare_rtx_and_jump(), do_jump(), do_jump_by_parts_equality_rtx(), do_jump_by_parts_greater_rtx(), do_jump_by_parts_zero_rtx(), do_jump_if_equal(), emit_store_flag_force(), expand_abs(), expand_addsub_overflow(), expand_arith_overflow_result_store(), expand_builtin_strub_leave(), expand_builtin_strub_update(), expand_doubleword_shift(), expand_expr_real_2(), expand_mul_overflow(), expand_neg_overflow(), expand_ubsan_result_store(), expand_vector_ubsan_overflow(), compare_by_pieces_d::finish_mode(), compare_by_pieces_d::generate(), and rtl_lv_add_condition_to_bb().
|
extern |
Like do_compare_and_jump but expects the values to compare as two rtx's. The decision as to signed or unsigned comparison must be made by the caller. If MODE is BLKmode, SIZE is an RTX giving the size of the objects being compared.
References profile_probability::apply_scale(), can_compare_p(), ccp_jump, CONST0_RTX, const0_rtx, CONSTANT_P, do_compare_rtx_and_jump(), do_jump_by_parts_equality_rtx(), do_jump_by_parts_greater_rtx(), do_pending_stack_adjust(), emit_cmp_and_jump_insns(), emit_jump(), emit_label(), profile_probability::even(), expand_binop(), FLOAT_MODE_P, gcc_assert, gcc_unreachable, GEN_INT, gen_label_rtx(), GET_CODE, GET_MODE, GET_MODE_PRECISION(), profile_probability::guessed_always(), have_insn_for(), HONOR_NANS(), HONOR_SNANS(), HOST_WIDE_INT_1U, profile_probability::invert(), is_int_mode(), NULL, NULL_RTX, OPTAB_WIDEN, reverse_condition(), reverse_condition_maybe_unordered(), rtx_equal_p(), SCALAR_FLOAT_MODE_P, SCALAR_INT_MODE_P, simplify_relational_operation(), profile_probability::split(), split_comparison(), swap_commutative_operands_p(), swap_condition(), poly_int< N, C >::to_constant(), TREE_TYPE, TYPE_VECTOR_SUBPARTS(), unknown_optab, unsigned_condition(), VECTOR_BOOLEAN_TYPE_P, and XEXP.
|
extern |
Pop any previously-pushed arguments that have not been popped yet.
References adjust_stack(), gen_int_mode(), inhibit_defer_pop, and pending_stack_adjust.
Referenced by allocate_dynamic_stack_space(), asan_emit_allocas_unpoison(), asan_emit_stack_protection(), assign_parms(), do_compare_rtx_and_jump(), do_jump(), do_jump_1(), emit_block_cmp_via_loop(), emit_block_move_via_loop(), emit_block_move_via_oriented_loop(), emit_conditional_add(), emit_conditional_move(), emit_jump(), emit_partition_copy(), emit_stack_save(), emit_store_flag_1(), expand_addsub_overflow(), expand_asm_stmt(), expand_builtin_apply(), expand_call(), expand_case(), expand_computed_goto(), expand_expr_divmod(), expand_expr_real_1(), expand_expr_real_2(), expand_fix(), expand_float(), expand_function_end(), expand_gimple_basic_block(), expand_gimple_tailcall(), expand_label(), expand_mul_overflow(), expand_naked_return(), expand_neg_overflow(), expand_null_return_1(), expand_POPCOUNT(), expand_sjlj_dispatch_table(), expand_SPACESHIP(), expand_vector_ubsan_overflow(), gen_cond_trap(), hwasan_emit_untag_frame(), insert_value_copy_on_edge(), maybe_optimize_mod_cmp(), maybe_optimize_pow2p_mod_cmp(), store_constructor(), store_expr(), store_one_arg(), try_casesi(), and try_tablejump().
|
extern |
Export function prototypes from dojump.cc. Copyright (C) 2015-2024 Free Software Foundation, Inc. This file is part of GCC. GCC is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version. GCC is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GCC; see the file COPYING3. If not see <http://www.gnu.org/licenses/>.
At the start of a function, record that we have no previously-pushed arguments waiting to be popped.
At the start of a function, record that we have no previously-pushed arguments waiting to be popped.
References pending_stack_adjust.
|
extern |
Generate code to evaluate EXP and jump to LABEL if the value is nonzero.
Generate code to evaluate EXP and jump to LABEL if the value is nonzero. PROB is probability of jump to LABEL.
References do_jump(), exp(), and NULL.
Referenced by expand_expr_real_1(), and store_constructor().
|
extern |
Similar to jumpif but dealing with exploded comparisons of the type OP0 CODE OP1 . LABEL and PROB are like in jumpif.
References do_jump_1(), and NULL.
Referenced by expand_gimple_cond().
|
extern |
Generate code to evaluate EXP and jump to LABEL if the value is zero.
Generate code to evaluate EXP and jump to LABEL if the value is zero. PROB is probability of jump to LABEL.
References do_jump(), exp(), profile_probability::invert(), and NULL.
Referenced by expand_expr_real_1(), expand_expr_real_2(), and store_expr().
|
extern |
Similar to jumpifnot but dealing with exploded comparisons of the type OP0 CODE OP1 . LABEL and PROB are like in jumpifnot.
References do_jump_1(), profile_probability::invert(), and NULL.
Referenced by expand_expr_real_2(), and expand_gimple_cond().
|
extern |
Restore the saved pending_stack_adjust/stack_pointer_delta.
References inhibit_defer_pop, pending_stack_adjust, stack_pointer_delta, saved_pending_stack_adjust::x_pending_stack_adjust, and saved_pending_stack_adjust::x_stack_pointer_delta.
Referenced by emit_conditional_move(), and expand_call().
|
extern |
Remember pending_stack_adjust/stack_pointer_delta. To be used around code that may call do_pending_stack_adjust (), but the generated code could be discarded e.g. using delete_insns_since.
References pending_stack_adjust, stack_pointer_delta, saved_pending_stack_adjust::x_pending_stack_adjust, and saved_pending_stack_adjust::x_stack_pointer_delta.
Referenced by emit_conditional_move(), and expand_call().
|
extern |
Split a comparison into two others, the second of which has the other "orderedness". The first is always ORDERED or UNORDERED if MODE does not honor NaNs (which means that it can be skipped in that case; see do_compare_rtx_and_jump). The two conditions are written in *CODE1 and *CODE2. Return true if the conditions must be ANDed, false if they must be ORed.
References gcc_unreachable, and HONOR_NANS().
Referenced by do_compare_rtx_and_jump(), and emit_store_flag().