Line data Source code
1 : /* Header file for misc range functions. -*- C++ -*-
2 : Copyright (C) 2017-2026 Free Software Foundation, Inc.
3 : Contributed by Aldy Hernandez <aldyh@redhat.com>.
4 :
5 : This file is part of GCC.
6 :
7 : GCC is free software; you can redistribute it and/or modify it under
8 : the terms of the GNU General Public License as published by the Free
9 : Software Foundation; either version 3, or (at your option) any later
10 : version.
11 :
12 : GCC is distributed in the hope that it will be useful, but WITHOUT ANY
13 : WARRANTY; without even the implied warranty of MERCHANTABILITY or
14 : FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
15 : for more details.
16 :
17 : You should have received a copy of the GNU General Public License
18 : along with GCC; see the file COPYING3. If not see
19 : <http://www.gnu.org/licenses/>. */
20 :
21 : #ifndef GCC_RANGE_H
22 : #define GCC_RANGE_H
23 :
24 : int_range<2> range_positives (tree type);
25 : int_range<2> range_negatives (tree type);
26 :
27 : // Return an irange instance that is a boolean TRUE.
28 :
29 : inline int_range<1>
30 198473430 : range_true (tree type = boolean_type_node)
31 : {
32 198473430 : unsigned prec = TYPE_PRECISION (type);
33 198473430 : return int_range<1> (type, wi::one (prec), wi::one (prec));
34 : }
35 :
36 : // Return an irange instance that is a boolean FALSE.
37 :
38 : inline int_range<1>
39 199962793 : range_false (tree type = boolean_type_node)
40 : {
41 199962793 : unsigned prec = TYPE_PRECISION (type);
42 199962793 : return int_range<1> (type, wi::zero (prec), wi::zero (prec));
43 : }
44 :
45 : // Return an irange that covers both true and false.
46 :
47 : inline int_range<1>
48 105538801 : range_true_and_false (tree type = boolean_type_node)
49 : {
50 105538801 : unsigned prec = TYPE_PRECISION (type);
51 105538801 : if (prec == 1)
52 86468322 : return int_range<1> (type);
53 19070967 : return int_range<1> (type, wi::zero (prec), wi::one (prec));
54 : }
55 :
56 : #endif // GCC_RANGE_H
|