GCC Middle and Back End API Reference
|
Go to the source code of this file.
Data Structures | |
struct | ssaexpand |
Functions | |
rtx | get_rtx_for_ssa_name (tree exp) |
gimple * | get_gimple_for_ssa_name (tree exp) |
bool | ssa_is_replaceable_p (gimple *stmt) |
void | finish_out_of_ssa (struct ssaexpand *sa) |
unsigned int | rewrite_out_of_ssa (struct ssaexpand *sa) |
void | expand_phi_nodes (struct ssaexpand *sa) |
Variables | |
struct ssaexpand | SA |
|
extern |
Given the out-of-ssa info object SA (with prepared partitions) eliminate all phi nodes in all basic blocks. Afterwards there are possibly some RTL instructions inserted on edges.
References cfun, ei_next(), ei_safe_edge(), ei_start, eliminate_phi(), ENTRY_BLOCK_PTR_FOR_FN, EXIT_BLOCK_PTR_FOR_FN, FOR_BB_BETWEEN, FOR_EACH_EDGE, g, gimple_seq_empty_p(), insns, ssaexpand::map, NULL, phi_nodes(), basic_block_def::preds, single_pred_edge(), single_pred_p(), and split_edge().
|
extern |
Free all memory associated with going out of SSA form. SA is the outof-SSA info object.
References BITMAP_FREE, delete_var_map(), free(), ssaexpand::map, ssaexpand::partition_to_pseudo, ssaexpand::partitions_for_parm_default_defs, ssaexpand::partitions_for_undefined_values, and ssaexpand::values.
If TER decided to forward the definition of SSA name EXP this function returns the defining statement, otherwise NULL.
References bitmap_bit_p, exp(), NULL, SA, SSA_NAME_DEF_STMT, and SSA_NAME_VERSION.
Referenced by avoid_deep_ter_for_debug(), ccmp_candidate_p(), ccmp_tree_comparison_p(), expand_call_mem_ref(), expand_call_stmt(), expand_ccmp_expr_1(), expand_debug_expr(), expand_expr_force_mode(), expand_expr_real_1(), expand_gimple_basic_block(), get_compare_parts(), get_def_for_expr(), get_def_for_expr_class(), optimize_bitfield_assignment_op(), and reorder_operands().
Returns the RTX expression representing the storage of the outof-SSA partition that the SSA name EXP is a member of.
References exp(), gcc_assert, NO_PARTITION, SA, and SSA_NAME_VERSION.
Referenced by expand_expr_real_1().
|
extern |
Take the current function out of SSA form, translating PHIs as described in R. Morgan, ``Building an Optimizing Compiler'', Butterworth-Heinemann, Boston, MA, 1998. pp 176-186.
References dump_file, dump_flags, eliminate_useless_phis(), gimple_dump_cfg(), insert_backedge_copies(), remove_indirect_clobbers(), remove_ssa_form(), and TDF_DETAILS.
Convert a program in SSA form into Normal form. Copyright (C) 2004-2025 Free Software Foundation, Inc. Contributed by Andrew Macleod <amacleod@redhat.com> 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/>.
FIXME: A lot of code here deals with expanding to RTL. All that code should be in cfgexpand.cc.
Return TRUE if expression STMT is suitable for replacement.
References cfun, DECL_HARD_REGISTER, direct_internal_fn_p(), dyn_cast(), FLOAT_TYPE_P, gimple_assign_rhs1(), gimple_assign_rhs_code(), gimple_call_internal_fn(), gimple_call_internal_p(), gimple_call_tail_p(), gimple_has_volatile_ops(), gimple_vdef(), is_gimple_assign(), single_imm_use(), SINGLE_SSA_TREE_OPERAND, SSA_OP_DEF, stmt_could_throw_p(), and TREE_TYPE.
Referenced by stmt_is_replaceable_p(), and ter_is_replaceable_p().
|
extern |
This is the singleton described above.
This variable holds information helping the rewriting of SSA trees into RTL.
Referenced by adjust_one_expanded_partition_var(), build_common_tree_nodes(), expand_debug_expr(), expand_gimple_basic_block(), expand_gimple_cond(), expand_one_register_var(), expand_one_ssa_partition(), expand_one_stack_var(), expand_stack_vars(), expand_used_vars(), get_gimple_for_ssa_name(), get_rtx_for_ssa_name(), insert_part_to_rtx_on_edge(), insert_partition_copy_on_edge(), insert_rtx_to_part_on_edge(), insert_value_copy_on_edge(), set_parm_rtl(), and set_rtl().