vec.h (vec<T, [...]): Guard call to memset if len-oldlen != 0.
authorRichard Biener <rguenther@suse.de>
Thu, 1 Dec 2016 18:18:30 +0000 (18:18 +0000)
committerPrathamesh Kulkarni <prathamesh3492@gcc.gnu.org>
Thu, 1 Dec 2016 18:18:30 +0000 (18:18 +0000)
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

gcc/ChangeLog
gcc/vec.h

index 6768c5f..b567324 100644 (file)
@@ -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.
index 14fb2a6..aa93411 100644 (file)
--- 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);
 }