GCC Middle and Back End API Reference
gimple-range-fold.cc File Reference
#include "config.h"
#include "system.h"
#include "coretypes.h"
#include "backend.h"
#include "insn-codes.h"
#include "tree.h"
#include "gimple.h"
#include "ssa.h"
#include "gimple-pretty-print.h"
#include "optabs-tree.h"
#include "gimple-iterator.h"
#include "gimple-fold.h"
#include "wide-int.h"
#include "fold-const.h"
#include "case-cfn-macros.h"
#include "omp-general.h"
#include "cfgloop.h"
#include "tree-ssa-loop.h"
#include "tree-scalar-evolution.h"
#include "langhooks.h"
#include "vr-values.h"
#include "range.h"
#include "value-query.h"
#include "gimple-range-op.h"
#include "gimple-range.h"
#include "cgraph.h"
#include "alloc-pool.h"
#include "symbol-summary.h"
#include "ipa-utils.h"
#include "sreal.h"
#include "ipa-cp.h"
#include "ipa-prop.h"
Include dependency graph for gimple-range-fold.cc:

Data Structures

class  fur_list
 
class  fur_relation
 

Functions

bool fold_range (vrange &r, gimple *s, vrange &r1, range_query *q)
 
bool fold_range (vrange &r, gimple *s, vrange &r1, vrange &r2, range_query *q)
 
bool fold_range (vrange &r, gimple *s, unsigned num_elements, vrange **vector, range_query *q)
 
bool fold_range (vrange &r, gimple *s, range_query *q)
 
bool fold_range (vrange &r, gimple *s, edge on_edge, range_query *q)
 
bool op1_range (vrange &r, gimple *s, const vrange &lhs, range_query *q)
 
bool op1_range (vrange &r, gimple *s, range_query *q)
 
bool op2_range (vrange &r, gimple *s, const vrange &lhs, range_query *q)
 
bool op2_range (vrange &r, gimple *s, range_query *q)
 
relation_trio fold_relations (gimple *s, range_query *q)
 
static void adjust_pointer_diff_expr (irange &res, const gimple *diff_stmt)
 
static void adjust_imagpart_expr (vrange &res, const gimple *stmt)
 
static void adjust_realpart_expr (vrange &res, const gimple *stmt)
 
static void gimple_range_adjustment (vrange &res, const gimple *stmt)
 

Function Documentation

◆ adjust_imagpart_expr()

◆ adjust_pointer_diff_expr()

◆ adjust_realpart_expr()

◆ fold_range() [1/5]

bool fold_range ( vrange & r,
gimple * s,
edge on_edge,
range_query * q )

References fold_using_range::fold_stmt(), and r.

◆ fold_range() [2/5]

bool fold_range ( vrange & r,
gimple * s,
range_query * q = NULL )
Header file for the GIMPLE fold_using_range interface.
   Copyright (C) 2019-2024 Free Software Foundation, Inc.
   Contributed by Andrew MacLeod <amacleod@redhat.com>
   and Aldy Hernandez <aldyh@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/>.   

References fold_using_range::fold_stmt(), and r.

◆ fold_range() [3/5]

bool fold_range ( vrange & r,
gimple * s,
unsigned num_elements,
vrange ** vector,
range_query * q )

References fold_using_range::fold_stmt(), and r.

◆ fold_range() [4/5]

bool fold_range ( vrange & r,
gimple * s,
vrange & r1,
range_query * q )

◆ fold_range() [5/5]

bool fold_range ( vrange & r,
gimple * s,
vrange & r1,
vrange & r2,
range_query * q )

References fold_using_range::fold_stmt(), and r.

◆ fold_relations()

◆ gimple_range_adjustment()

static void gimple_range_adjustment ( vrange & res,
const gimple * stmt )
static

◆ op1_range() [1/2]

◆ op1_range() [2/2]

bool op1_range ( vrange & r,
gimple * s,
range_query * q )

◆ op2_range() [1/2]

◆ op2_range() [2/2]

bool op2_range ( vrange & r,
gimple * s,
range_query * q )