aboutsummaryrefslogtreecommitdiff
path: root/gcc/fold-const.c
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2017-03-21 09:10:30 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2017-03-21 09:10:30 +0100
commit9f30dff0eed2813ead7a2e2927e0eb8c333baf8b (patch)
tree25395a0bf3f57d3e2ac54445b270b159ac79d661 /gcc/fold-const.c
parent9da12bea7dd6fe01bdb2fc559f22901e0e59b6ca (diff)
downloadgcc-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.c2
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;