GCC Middle and Back End API Reference
value-relation.cc File Reference
#include "config.h"
#include "system.h"
#include "coretypes.h"
#include "backend.h"
#include "tree.h"
#include "gimple.h"
#include "ssa.h"
#include "gimple-range.h"
#include "tree-pretty-print.h"
#include "gimple-pretty-print.h"
#include "alloc-pool.h"
#include "dominance.h"
Include dependency graph for value-relation.cc:

Data Structures

class  relation_chain
 

Functions

void print_relation (FILE *f, relation_kind rel)
 
relation_kind relation_negate (relation_kind r)
 
relation_kind relation_swap (relation_kind r)
 
relation_kind relation_intersect (relation_kind r1, relation_kind r2)
 
relation_kind relation_union (relation_kind r1, relation_kind r2)
 
relation_kind relation_transitive (relation_kind r1, relation_kind r2)
 
void adjust_equivalence_range (vrange &range)
 

Variables

static const char *const kind_string [VREL_LAST]
 
static const unsigned char rr_negate_table [VREL_LAST]
 
static const unsigned char rr_swap_table [VREL_LAST]
 
static const unsigned char rr_intersect_table [VREL_LAST][VREL_LAST]
 
static const unsigned char rr_union_table [VREL_LAST][VREL_LAST]
 
static const unsigned char rr_transitive_table [VREL_LAST][VREL_LAST]
 
static const tree_code relation_to_code [VREL_LAST]
 

Function Documentation

◆ adjust_equivalence_range()

◆ print_relation()

void print_relation ( FILE * f,
relation_kind rel )

◆ relation_intersect()

◆ relation_negate()

◆ relation_swap()

◆ relation_transitive()

relation_kind relation_transitive ( relation_kind r1,
relation_kind r2 )

◆ relation_union()

Variable Documentation

◆ kind_string

const char* const kind_string[VREL_LAST]
static
Initial value:
=
{ "varying", "undefined", "<", "<=", ">", ">=", "==", "!=", "pe8", "pe16",
"pe32", "pe64" }
Header file for the value range relational processing.
   Copyright (C) 2020-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 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/>.   

Referenced by print_relation().

◆ relation_to_code

const tree_code relation_to_code[VREL_LAST]
static
Initial value:
= {
ERROR_MARK, ERROR_MARK, LT_EXPR, LE_EXPR, GT_EXPR, GE_EXPR, EQ_EXPR,
NE_EXPR }

◆ rr_intersect_table

const unsigned char rr_intersect_table[VREL_LAST][VREL_LAST]
static
Initial value:
= {
@ VREL_GT
Definition value-relation.h:69
@ VREL_LT
Definition value-relation.h:67
@ VREL_LE
Definition value-relation.h:68
@ VREL_NE
Definition value-relation.h:72
@ VREL_EQ
Definition value-relation.h:71
@ VREL_VARYING
Definition value-relation.h:65
@ VREL_UNDEFINED
Definition value-relation.h:66
@ VREL_GE
Definition value-relation.h:70

Referenced by relation_intersect().

◆ rr_negate_table

const unsigned char rr_negate_table[VREL_LAST]
static

◆ rr_swap_table

const unsigned char rr_swap_table[VREL_LAST]
static

◆ rr_transitive_table

◆ rr_union_table