GCC Middle and Back End API Reference
prop_value_t Struct Reference

Data Fields

tree value
 

Detailed Description

Copy propagation and SSA_NAME replacement support routines. Copyright (C) 2004-2025 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/>.
This file implements the copy propagation pass and provides a handful of interfaces for performing const/copy propagation and simple expression replacement which keep variable annotations up-to-date. We require that for any copy operation where the RHS and LHS have a non-null memory tag the memory tag be the same. It is OK for one or both of the memory tags to be NULL. We also require tracking if a variable is dereferenced in a load or store operation. We enforce these requirements by having all copy propagation and replacements of one SSA_NAME with a different SSA_NAME to use the APIs defined in this file.
Lattice for copy-propagation. The lattice is initialized to UNDEFINED (value == NULL) for SSA names that can become a copy of something or VARYING (value == self) if not (see get_copy_of_val and stmt_may_generate_copy). Other values make the name a COPY of that value. When visiting a statement or PHI node the lattice value for an SSA name can transition from UNDEFINED to COPY to VARYING.

Field Documentation

◆ value

tree prop_value_t::value

The documentation for this struct was generated from the following file: