1 /* Reassociation for trees.
2    Copyright (C) 2020-2021 Free Software Foundation, Inc.
3 
4 This file is part of GCC.
5 
6 GCC is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 3, or (at your option)
9 any later version.
10 
11 GCC is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 GNU General Public License for more details.
15 
16 You should have received a copy of the GNU General Public License
17 along with GCC; see the file COPYING3.  If not see
18 <http://www.gnu.org/licenses/>.  */
19 
20 #ifndef GCC_SSA_REASSOC_H
21 #define GCC_SSA_REASSOC_H
22 
23 /* Operator, rank pair.  */
24 struct operand_entry
25 {
26   unsigned int rank;
27   unsigned int id;
28   tree op;
29   unsigned int count;
30   gimple *stmt_to_insert;
31 };
32 
33 struct range_entry
34 {
35   tree exp;
36   tree low;
37   tree high;
38   bool in_p;
39   bool strict_overflow_p;
40   unsigned int idx, next;
41 };
42 
43 void dump_range_entry (FILE *file, struct range_entry *r);
44 void debug_range_entry (struct range_entry *r);
45 void init_range_entry (struct range_entry *r, tree exp, gimple *stmt);
46 bool no_side_effect_bb (basic_block bb);
47 
48 #endif  /* GCC_SSA_REASSOC_H  */
49