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 "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 dependency graph for generic-match-head.cc:

Functions

static bool types_match (tree t1, tree t2)
 
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 bitwise_equal_p (tree expr1, tree expr2)
 
static bool bitwise_inverted_equal_p (tree expr1, tree expr2, bool &wascmp)
 

Function Documentation

◆ bitwise_equal_p()

static 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 ggc_alloc(), operand_equal_p(), STRIP_NOPS, wi::to_wide(), TREE_CODE, tree_nop_conversion_p(), and TREE_TYPE.

◆ bitwise_inverted_equal_p()

static 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, COMPARISON_CLASS_P, ggc_alloc(), HONOR_NANS(), invert_tree_comparison(), operand_equal_p(), STRIP_NOPS, wi::to_wide(), TREE_CODE, tree_nop_conversion_p(), TREE_OPERAND, and TREE_TYPE.

◆ canonicalize_math_after_vectorization_p()

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

◆ canonicalize_math_p()

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

References cfun, and PROP_gimple_opt_math.

◆ optimize_successive_divisions_p()

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

◆ optimize_vectors_before_lowering_p()

static 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, and PROP_gimple_lvec.

◆ single_use()

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

Referenced by loop_cand::analyze_iloop_reduction_var(), get_prop_source_stmt(), and single_imm_use_1().

◆ types_match()

static bool types_match ( tree t1,
tree t2 )
inlinestatic
Preamble and helpers for the autogenerated generic-match.cc file.
   Copyright (C) 2014-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/>.   
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, and TYPE_P.