GCC Middle and Back End API Reference
|
Go to the source code of this file.
Data Structures | |
struct | hashable_expr |
struct | cond_equivalence |
class | expr_hash_elt |
struct | expr_elt_hasher |
class | avail_exprs_stack |
class | const_and_copies |
Typedefs | |
typedef class expr_hash_elt * | expr_hash_elt_t |
Enumerations | |
enum | expr_kind { EXPR_SINGLE , EXPR_UNARY , EXPR_BINARY , EXPR_TERNARY , EXPR_CALL , EXPR_PHI } |
Functions | |
void | initialize_expr_from_cond (tree cond, struct hashable_expr *expr) |
void | record_conditions (vec< cond_equivalence > *p, tree, tree) |
Structure for entries in the expression hash table.
Header file for SSA dominator optimizations. Copyright (C) 2013-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/>.
Representation of a "naked" right-hand-side expression, to be used in recording available expressions in the expression hash table.
Enumerator | |
---|---|
EXPR_SINGLE | |
EXPR_UNARY | |
EXPR_BINARY | |
EXPR_TERNARY | |
EXPR_CALL | |
EXPR_PHI |
void initialize_expr_from_cond | ( | tree | cond, |
struct hashable_expr * | expr ) |
Given a conditional expression COND as a tree, initialize a hashable_expr expression EXPR. The conditional must be a comparison or logical negation. A constant or a variable is not permitted.
References boolean_type_node, COMPARISON_CLASS_P, EXPR_BINARY, EXPR_UNARY, gcc_unreachable, ggc_alloc(), expr::ops, TREE_CODE, TREE_OPERAND, and operand::type.
Referenced by record_conditions().
void record_conditions | ( | vec< cond_equivalence > * | p, |
tree | cond, | ||
tree | inverted ) |
Record that COND is true and INVERTED is false into the edge information structure. Also record that any conditions dominated by COND are true as well. For example, if a < b is true, then a <= b must also be true.
References boolean_false_node, boolean_true_node, build_and_record_new_cond(), COMPARISON_CLASS_P, cond_equivalence::cond, FLOAT_TYPE_P, ggc_alloc(), initialize_expr_from_cond(), TREE_CODE, TREE_OPERAND, TREE_TYPE, and cond_equivalence::value.
Referenced by edge_info::derive_equivalences(), and record_edge_info().