From 444cda74708a494cc814951fe29d4904cec4f7e2 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Thu, 1 Nov 2018 13:31:45 +0100 Subject: re PR tree-optimization/87826 (ubsan: gimple-ssa-store-merging.c:281) PR tree-optimization/87826 * gimple-ssa-store-merging.c (do_shift_rotate): Punt if count is negative or larger or equal to type's precision. * gcc.dg/pr87826.c: New test. From-SVN: r265720 --- gcc/gimple-ssa-store-merging.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'gcc/gimple-ssa-store-merging.c') diff --git a/gcc/gimple-ssa-store-merging.c b/gcc/gimple-ssa-store-merging.c index e1ddcb5..5e5823c 100644 --- a/gcc/gimple-ssa-store-merging.c +++ b/gcc/gimple-ssa-store-merging.c @@ -262,7 +262,9 @@ do_shift_rotate (enum tree_code code, int i, size = TYPE_PRECISION (n->type) / BITS_PER_UNIT; unsigned head_marker; - if (count % BITS_PER_UNIT != 0) + if (count < 0 + || count >= TYPE_PRECISION (n->type) + || count % BITS_PER_UNIT != 0) return false; count = (count / BITS_PER_UNIT) * BITS_PER_MARKER; -- cgit v1.1