aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-vect-loop-manip.cc
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2023-12-21 11:14:55 +0100
committerJakub Jelinek <jakub@redhat.com>2023-12-21 11:16:02 +0100
commit0e7f5039c52a020c3ed5f18a2b3ee1fb42b78f62 (patch)
treec380f7ddfba0158255f7f84b5b1eb38686ee24e1 /gcc/tree-vect-loop-manip.cc
parent3d1bdbf64c2ed5be70fbff687b2927e328297b81 (diff)
downloadgcc-0e7f5039c52a020c3ed5f18a2b3ee1fb42b78f62.zip
gcc-0e7f5039c52a020c3ed5f18a2b3ee1fb42b78f62.tar.gz
gcc-0e7f5039c52a020c3ed5f18a2b3ee1fb42b78f62.tar.bz2
ubsan: Add workaround for missing bitint libubsan support for shifts [PR113092]
libubsan still doesn't support bitints, so ubsan contains a workaround and emits value 0 and TK_Unknown kind for those. If shift second operand has the large/huge _BitInt type, this results in internal errors in libubsan though, so the following patch provides a temporary workaround for that - in the rare case where the last operand has _BitInt type wider than __int128 (or long long on 32-bit arches), it will pretend the shift count has that type saturated to its range. IMHO better than crashing in the library. If the value fits into the __int128 (or long long) range, it will be printed correctly (just print that it has __int128/long long type rather than say _BitInt(255)), if it doesn't, user will at least know that it is a very large negative or very large positive value. 2023-12-21 Jakub Jelinek <jakub@redhat.com> PR sanitizer/113092 * c-ubsan.cc (ubsan_instrument_shift): Workaround for missing ubsan _BitInt support for the shift count. * gcc.dg/ubsan/bitint-4.c: New test.
Diffstat (limited to 'gcc/tree-vect-loop-manip.cc')
0 files changed, 0 insertions, 0 deletions