GCC Middle and Back End API Reference
generic-match-head.cc File Reference
#include "config.h"
#include "system.h"
#include "coretypes.h"
#include "backend.h"
#include "target.h"
#include "rtl.h"
#include "tree.h"
#include "gimple.h"
#include "ssa.h"
#include "cgraph.h"
#include "vec-perm-indices.h"
#include "fold-const.h"
#include "fold-const-call.h"
#include "stor-layout.h"
#include "tree-dfa.h"
#include "builtins.h"
#include "case-cfn-macros.h"
#include "gimplify.h"
#include "memmodel.h"
#include "optabs.h"
#include "optabs-tree.h"
#include "dbgcnt.h"
#include "tm.h"
#include "tree-eh.h"
#include "langhooks.h"
#include "tree-pass.h"
#include "attribs.h"
#include "asan.h"
#include "gimple-iterator.h"
#include "gimple-fold.h"
Include dependency graph for generic-match-head.cc:

Functions

static bool types_match (tree t1, tree t2)
static bool types_match (tree t1, tree t2, tree t3)
static bool single_use (tree t)
static bool canonicalize_math_p ()
static bool canonicalize_math_after_vectorization_p ()
static bool optimize_vectors_before_lowering_p ()
static bool optimize_successive_divisions_p (tree, tree)
static bool expr_no_side_effects_p (tree t)
static bool bitwise_equal_p (tree expr1, tree expr2)
static bool bitwise_inverted_equal_p (tree expr1, tree expr2, bool &wascmp)
static gimple * gimple_match_ctx (tree)
static bool gimple_match_no_overflow_p (tree_code, tree type, tree, tree, tree)

Function Documentation

◆ bitwise_equal_p()

bool bitwise_equal_p ( tree expr1,
tree expr2 )
inlinestatic
Return true if EXPR1 and EXPR2 have the same value, but not necessarily
same type.  The types can differ through nop conversions.   

References bitwise_equal_p, operand_equal_p(), STRIP_NOPS, wi::to_wide(), TREE_CODE, tree_nop_conversion_p(), and TREE_TYPE.

◆ bitwise_inverted_equal_p()

bool bitwise_inverted_equal_p ( tree expr1,
tree expr2,
bool & wascmp )
inlinestatic
Return true if EXPR1 and EXPR2 have the bitwise opposite value,
but not necessarily same type.
The types can differ through nop conversions.   

References bitwise_equal_p, bitwise_inverted_equal_p, COMPARISON_CLASS_P, HONOR_NANS(), invert_tree_comparison(), operand_equal_p(), STRIP_NOPS, wi::to_wide(), TREE_CODE, tree_nop_conversion_p(), TREE_OPERAND, TREE_TYPE, and uniform_integer_cst_p().

◆ canonicalize_math_after_vectorization_p()

bool canonicalize_math_after_vectorization_p ( )
inlinestatic
Return true if math operations that are beneficial only after
vectorization should be canonicalized.   

References canonicalize_math_after_vectorization_p().

Referenced by canonicalize_math_after_vectorization_p(), and canonicalize_math_after_vectorization_p().

◆ canonicalize_math_p()

bool canonicalize_math_p ( )
inlinestatic
Return true if math operations should be canonicalized,
e.g. sqrt(sqrt(x)) -> pow(x, 0.25).   

References canonicalize_math_p(), cfun, and PROP_gimple_opt_math.

Referenced by canonicalize_math_p(), and canonicalize_math_p().

◆ expr_no_side_effects_p()

bool expr_no_side_effects_p ( tree t)
inlinestatic
Returns true if the expression T has no side effects
including not trapping.  

References expr_no_side_effects_p(), generic_expr_could_trap_p(), and TREE_SIDE_EFFECTS.

Referenced by expr_no_side_effects_p(), and expr_no_side_effects_p().

◆ gimple_match_ctx()

gimple * gimple_match_ctx ( tree )
inlinestatic

◆ gimple_match_no_overflow_p()

bool gimple_match_no_overflow_p ( tree_code ,
tree type,
tree ,
tree ,
tree  )
inlinestatic
Return true if CODE applied to OP0 and OP1 in TYPE cannot overflow.
On GENERIC there is no range query, so only TYPE can say so.   

References gimple_match_no_overflow_p(), and TYPE_OVERFLOW_UNDEFINED.

Referenced by gimple_match_no_overflow_p(), and gimple_match_no_overflow_p().

◆ optimize_successive_divisions_p()

bool optimize_successive_divisions_p ( tree ,
tree  )
inlinestatic
Return true if successive divisions can be optimized.
Defer to GIMPLE opts.   

References optimize_successive_divisions_p().

Referenced by optimize_successive_divisions_p(), and optimize_successive_divisions_p().

◆ optimize_vectors_before_lowering_p()

bool optimize_vectors_before_lowering_p ( )
inlinestatic
Return true if we can still perform transformations that may introduce
vector operations that are not supported by the target. Vector lowering
normally handles those, but after that pass, it becomes unsafe.   

References cfun, optimize_vectors_before_lowering_p(), and PROP_gimple_lvec.

Referenced by optimize_vectors_before_lowering_p(), and optimize_vectors_before_lowering_p().

◆ single_use()

bool single_use ( tree t)
inlinestatic
Return if T has a single use.  For GENERIC, we assume this is
always true.   

References single_use().

Referenced by single_use(), and single_use().

◆ types_match() [1/2]

bool types_match ( tree t1,
tree t2 )
inlinestatic
Preamble and helpers for the autogenerated generic-match.cc file.
   Copyright (C) 2014-2026 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/>.   
Routine to determine if the types T1 and T2 are effectively
the same for GENERIC.  If T1 or T2 is not a type, the test
applies to their TREE_TYPE.   

References TREE_TYPE, TYPE_MAIN_VARIANT, TYPE_P, and types_match().

Referenced by types_match(), types_match(), types_match(), and types_match().

◆ types_match() [2/2]

bool types_match ( tree t1,
tree t2,
tree t3 )
inlinestatic
Routine to determine if the types T1, T2 and T3 are effectively
the same for GENERIC.  If T1, T2 or T2 is not a type, the test
applies to their TREE_TYPE.   

References types_match().