GCC Middle and Back End API Reference
tree-outof-ssa.h File Reference
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  ssaexpand

Functions

rtx get_rtx_for_ssa_name (tree exp)
gimpleget_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

Function Documentation

◆ expand_phi_nodes()

void expand_phi_nodes ( 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().

◆ finish_out_of_ssa()

void finish_out_of_ssa ( struct ssaexpand * sa)
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.

◆ get_gimple_for_ssa_name()

◆ get_rtx_for_ssa_name()

rtx get_rtx_for_ssa_name ( tree exp)
inline
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().

◆ rewrite_out_of_ssa()

unsigned int rewrite_out_of_ssa ( struct ssaexpand * sa)
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.

◆ ssa_is_replaceable_p()

bool ssa_is_replaceable_p ( gimple * stmt)
extern
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().

Variable Documentation

◆ SA