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 no basic block will have phi nodes anymore and 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, set_phi_nodes(), 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, SSA_NAME_VERSION, and ssaexpand::values.
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, ssaexpand::map, NO_PARTITION, ssaexpand::partition_to_pseudo, _var_map::partition_to_view, SA, SSA_NAME_VERSION, and _var_map::var_partition.
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().