aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Biener <rguenther@suse.de>2016-12-01 18:18:30 +0000
committerPrathamesh Kulkarni <prathamesh3492@gcc.gnu.org>2016-12-01 18:18:30 +0000
commit1281fc99115392eb3f19f5e0a5c9b604fc72b27a (patch)
treeb529cabd7b70f4f846b3baebc55b5aa08d7b5bef
parent3c7089946936a3e420f0e5db83212f15e0a7027a (diff)
downloadgcc-1281fc99115392eb3f19f5e0a5c9b604fc72b27a.zip
gcc-1281fc99115392eb3f19f5e0a5c9b604fc72b27a.tar.gz
gcc-1281fc99115392eb3f19f5e0a5c9b604fc72b27a.tar.bz2
vec.h (vec<T, [...]): Guard call to memset if len-oldlen != 0.
2016-12-01 Richard Biener <rguenther@suse.de> Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org> * vec.h (vec<T, A, vl_embed>::quick_grow_cleared): Guard call to memset if len-oldlen != 0. (vec<T, va_heap, vl_ptr>::safe_grow_cleared): Likewise. Co-Authored-By: Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org> From-SVN: r243125
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/vec.h8
2 files changed, 13 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 6768c5f..b567324 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2016-12-01 Richard Biener <rguenther@suse.de>
+ Prathamesh Kulkarni <prathamesh.kulkarni@linaro.org>
+
+ * vec.h (vec<T, A, vl_embed>::quick_grow_cleared): Guard call to
+ memset if len-oldlen != 0.
+ (vec<T, va_heap, vl_ptr>::safe_grow_cleared): Likewise.
+
2016-12-01 Uros Bizjak <ubizjak@gmail.com>
* config/i386/i386.md (*andndi3_doubleword): Depend on TARGET_SSE2.
diff --git a/gcc/vec.h b/gcc/vec.h
index 14fb2a6..aa93411 100644
--- a/gcc/vec.h
+++ b/gcc/vec.h
@@ -1092,8 +1092,10 @@ inline void
vec<T, A, vl_embed>::quick_grow_cleared (unsigned len)
{
unsigned oldlen = length ();
+ size_t sz = sizeof (T) * (len - oldlen);
quick_grow (len);
- memset (&(address ()[oldlen]), 0, sizeof (T) * (len - oldlen));
+ if (sz != 0)
+ memset (&(address ()[oldlen]), 0, sz);
}
@@ -1605,8 +1607,10 @@ inline void
vec<T, va_heap, vl_ptr>::safe_grow_cleared (unsigned len MEM_STAT_DECL)
{
unsigned oldlen = length ();
+ size_t sz = sizeof (T) * (len - oldlen);
safe_grow (len PASS_MEM_STAT);
- memset (&(address ()[oldlen]), 0, sizeof (T) * (len - oldlen));
+ if (sz != 0)
+ memset (&(address ()[oldlen]), 0, sz);
}