diff options
author | Jakub Jelinek <jakub@redhat.com> | 2017-03-21 09:10:30 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2017-03-21 09:10:30 +0100 |
commit | 9f30dff0eed2813ead7a2e2927e0eb8c333baf8b (patch) | |
tree | 25395a0bf3f57d3e2ac54445b270b159ac79d661 /gcc/fold-const.c | |
parent | 9da12bea7dd6fe01bdb2fc559f22901e0e59b6ca (diff) | |
download | gcc-9f30dff0eed2813ead7a2e2927e0eb8c333baf8b.zip gcc-9f30dff0eed2813ead7a2e2927e0eb8c333baf8b.tar.gz gcc-9f30dff0eed2813ead7a2e2927e0eb8c333baf8b.tar.bz2 |
re PR middle-end/67338 (fold-const sanitizer runtime error in roundup_loc)
PR c/67338
* fold-const.c (round_up_loc): Negate divisor in unsigned type to
avoid UB.
* gcc.dg/pr67338.c: New test.
From-SVN: r246305
Diffstat (limited to 'gcc/fold-const.c')
-rw-r--r-- | gcc/fold-const.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/gcc/fold-const.c b/gcc/fold-const.c index 12445aa..1a9a264 100644 --- a/gcc/fold-const.c +++ b/gcc/fold-const.c @@ -14250,7 +14250,7 @@ round_up_loc (location_t loc, tree value, unsigned int divisor) overflow_p = TREE_OVERFLOW (value); val += divisor - 1; - val &= - (int) divisor; + val &= (int) -divisor; if (val == 0) overflow_p = true; |