From 1125164cd32576b05e6c078077d78736fa0d63e3 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Sun, 21 Aug 2005 15:27:56 +0200 Subject: [PATCH] simplify-rtx.c (simplify_immed_subreg): Only clear up to elem_bitsize bits, not max_bitsize. * simplify-rtx.c (simplify_immed_subreg) : Only clear up to elem_bitsize bits, not max_bitsize. * gcc.target/i386/sse-4.c: New test. From-SVN: r103318 --- gcc/ChangeLog | 5 +++++ gcc/simplify-rtx.c | 2 +- gcc/testsuite/ChangeLog | 4 ++++ gcc/testsuite/gcc.target/i386/sse-4.c | 10 ++++++++++ 4 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gcc.target/i386/sse-4.c diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1329cf2f581..90e30ae6d7b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2005-08-21 Jakub Jelinek + + * simplify-rtx.c (simplify_immed_subreg) : Only clear + up to elem_bitsize bits, not max_bitsize. + 2005-08-21 Sebastian Pop PR tree-optimization/23433 diff --git a/gcc/simplify-rtx.c b/gcc/simplify-rtx.c index ca9d9dab4a5..8a2faae30a6 100644 --- a/gcc/simplify-rtx.c +++ b/gcc/simplify-rtx.c @@ -3605,7 +3605,7 @@ simplify_immed_subreg (enum machine_mode outermode, rtx op, } /* It shouldn't matter what's done here, so fill it with zero. */ - for (; i < max_bitsize; i += value_bit) + for (; i < elem_bitsize; i += value_bit) *vp++ = 0; } else diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index f2489403855..310c782ba6f 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2005-08-21 Jakub Jelinek + + * gcc.target/i386/sse-4.c: New test. + 2005-08-20 John David Anglin PR testsuite/23239 diff --git a/gcc/testsuite/gcc.target/i386/sse-4.c b/gcc/testsuite/gcc.target/i386/sse-4.c new file mode 100644 index 00000000000..394ad9d7ec4 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/sse-4.c @@ -0,0 +1,10 @@ +/* This testcase caused a buffer overflow in simplify_immed_subreg. */ +/* { dg-do compile } */ +/* { dg-options "-O2 -msse2" } */ + +#include + +__m128i foo (__m128i x) +{ + return _mm_min_epu8 (x, _mm_set1_epi8 (10)); +} -- 2.30.2