diff options
author | Jakub Jelinek <jakub@redhat.com> | 2023-09-12 13:08:54 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@redhat.com> | 2023-09-12 13:08:54 +0200 |
commit | b24fd3bccf76821b46c52cf375e460b7e64d4139 (patch) | |
tree | f866e86d6645312332ed25a2f179ca8c59e532e5 /gcc/fold-const.cc | |
parent | 6067dbdcf77df995129214248f062d9ce18b48d8 (diff) | |
download | gcc-b24fd3bccf76821b46c52cf375e460b7e64d4139.zip gcc-b24fd3bccf76821b46c52cf375e460b7e64d4139.tar.gz gcc-b24fd3bccf76821b46c52cf375e460b7e64d4139.tar.bz2 |
fold-const: Handle BITINT_TYPE in range_check_type
When discussing PR111369 with Andrew Pinski, I've realized that
I haven't added BITINT_TYPE handling to range_check_type. Right now
(unsigned) max + 1 == (unsigned) min for signed _BitInt,l so I think we
don't need to do the extra hops for BITINT_TYPE (though possibly we don't
need them for INTEGER_TYPE either in the two's complement word and we don't
support anything else, though I really don't know if Ada or some other
FEs don't create weird INTEGER_TYPEs).
2023-09-12 Jakub Jelinek <jakub@redhat.com>
* fold-const.cc (range_check_type): Handle BITINT_TYPE like
OFFSET_TYPE.
Diffstat (limited to 'gcc/fold-const.cc')
-rw-r--r-- | gcc/fold-const.cc | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/gcc/fold-const.cc b/gcc/fold-const.cc index d19b466..c5ac822 100644 --- a/gcc/fold-const.cc +++ b/gcc/fold-const.cc @@ -5565,7 +5565,12 @@ range_check_type (tree etype) else return NULL_TREE; } - else if (POINTER_TYPE_P (etype) || TREE_CODE (etype) == OFFSET_TYPE) + else if (POINTER_TYPE_P (etype) + || TREE_CODE (etype) == OFFSET_TYPE + /* Right now all BITINT_TYPEs satisfy + (unsigned) max + 1 == (unsigned) min, so no need to verify + that like for INTEGER_TYPEs. */ + || TREE_CODE (etype) == BITINT_TYPE) etype = unsigned_type_for (etype); return etype; } |