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


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)


struct ssaexpand SA

Function Documentation

◆ expand_phi_nodes()

void expand_phi_nodes ( struct ssaexpand * sa)
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, ggc_alloc(), gimple_seq_empty_p(), insns, NULL, phi_nodes(), basic_block_def::preds, set_phi_nodes(), single_pred_edge(), single_pred_p(), and split_edge().

◆ finish_out_of_ssa()

void finish_out_of_ssa ( struct ssaexpand * sa)
Free all memory associated with going out of SSA form.  SA is
the outof-SSA info object.   

References BITMAP_FREE, delete_var_map(), free(), and ggc_alloc().

◆ get_gimple_for_ssa_name()

◆ get_rtx_for_ssa_name()

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

◆ rewrite_out_of_ssa()

unsigned int rewrite_out_of_ssa ( struct ssaexpand * sa)
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(), ggc_alloc(), 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)
Convert a program in SSA form into Normal form.
   Copyright (C) 2004-2024 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
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
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, FLOAT_TYPE_P, ggc_alloc(), gimple_assign_rhs1(), gimple_assign_rhs_code(), gimple_has_volatile_ops(), gimple_vdef(), is_gimple_assign(), is_gimple_call(), 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