GCC Middle and Back End API Reference
ipcp_value< valtype > Class Template Reference

#include <ipa-cp.h>

Inheritance diagram for ipcp_value< valtype >:
Collaboration diagram for ipcp_value< valtype >:

Public Member Functions

void add_source (cgraph_edge *cs, ipcp_value *src_val, int src_idx, HOST_WIDE_INT offset)
 
bool same_scc (const ipcp_value< valtype > *o)
 
bool self_recursion_generated_p ()
 

Data Fields

valtype value
 
ipcp_value_source< valtype > * sources = nullptr
 
ipcp_valuenext = nullptr
 
ipcp_valuescc_next = nullptr
 
ipcp_valuetopo_next = nullptr
 
cgraph_nodespec_node = nullptr
 
int dfs = 0
 
int low_link = 0
 
int scc_no = 0
 
unsigned self_recursion_generated_level = 0
 
bool on_stack = false
 
sreal local_time_benefit = 0
 
sreal prop_time_benefit = 0
 
int local_size_cost = 0
 
int prop_size_cost = 0
 

Detailed Description

template<typename valtype>
class ipcp_value< valtype >
Interprocedural constant propagation
   Copyright (C) 2024 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/>.   
Describes one particular value stored in struct ipcp_lattice.   

Member Function Documentation

◆ add_source()

template<typename valtype >
void ipcp_value< valtype >::add_source ( cgraph_edge * cs,
ipcp_value< valtype > * src_val,
int src_idx,
HOST_WIDE_INT offset )
Add a new value source to the value represented by THIS, marking that a
value comes from edge CS and (if the underlying jump function is a
pass-through or an ancestor one) from a caller value SRC_VAL of a caller
parameter described by SRC_INDEX.  OFFSET is negative if the source was the
scalar value of the parameter itself or the offset within an aggregate.   

References ipcp_value_source< valtype >::cs, ipcp_value_source< valtype >::index, ipcp_sources_pool, ipcp_value_source< valtype >::next, ipcp_value_source< valtype >::offset, offset, sources, and ipcp_value_source< valtype >::val.

Referenced by ipcp_lattice< valtype >::add_value().

◆ same_scc()

template<typename valtype >
bool ipcp_value< valtype >::same_scc ( const ipcp_value< valtype > * o)
inline

◆ self_recursion_generated_p()

template<typename valtype >
bool ipcp_value< valtype >::self_recursion_generated_p ( )
inline
Return true, if a this value has been generated for a self-recursive call as
a result of an arithmetic pass-through jump-function acting on a value in
the same lattice function.   

References ipcp_value< valtype >::self_recursion_generated_level.

Referenced by decide_about_value(), decide_whether_version_node(), ipcp_lattice< valtype >::print(), value_topo_info< valtype >::propagate_effects(), and propagate_vals_across_arith_jfunc().

Field Documentation

◆ dfs

template<typename valtype >
int ipcp_value< valtype >::dfs = 0

◆ local_size_cost

◆ local_time_benefit

◆ low_link

template<typename valtype >
int ipcp_value< valtype >::low_link = 0

◆ next

◆ on_stack

template<typename valtype >
bool ipcp_value< valtype >::on_stack = false

◆ prop_size_cost

int ipcp_value_base::prop_size_cost = 0
inherited

◆ prop_time_benefit

sreal ipcp_value_base::prop_time_benefit = 0
inherited

◆ scc_next

template<typename valtype >
ipcp_value* ipcp_value< valtype >::scc_next = nullptr

◆ scc_no

template<typename valtype >
int ipcp_value< valtype >::scc_no = 0

◆ self_recursion_generated_level

◆ sources

◆ spec_node

template<typename valtype >
cgraph_node* ipcp_value< valtype >::spec_node = nullptr

◆ topo_next

template<typename valtype >
ipcp_value* ipcp_value< valtype >::topo_next = nullptr

◆ value


The documentation for this class was generated from the following files: