From: Jakub Jelinek Date: Sun, 21 Aug 2005 13:27:56 +0000 (+0200) Subject: simplify-rtx.c (simplify_immed_subreg): Only clear up to elem_bitsize bits, not max_b... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=1125164cd32576b05e6c078077d78736fa0d63e3;p=gcc.git 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 --- 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)); +}