On 06/18/2015 06:10 AM, Richard Biener wrote:
What's the status of this patch? I have a couple spec regression testers that have been unable to build GCC due to this issue, specifically the sched-deps.c change. The above patch (with memset removed) does result in a successful build.You are right that we should call ::new just for classes that have m_ignore_type_size == false. >I've come up with following patch, that I tested slightly: > >diff --git a/gcc/alloc-pool.h b/gcc/alloc-pool.h >index 1785df5..7da5f7a 100644 >--- a/gcc/alloc-pool.h >+++ b/gcc/alloc-pool.h >@@ -412,8 +412,16 @@ pool_allocator<T>::allocate () > #endif > VALGRIND_DISCARD (VALGRIND_MAKE_MEM_UNDEFINED (header, size)); > >+ T *ptr = (T *)header; >+ > /* Call default constructor. */ >- return (T *)(header); >+ if (!m_ignore_type_size) >+ { >+ memset (header + sizeof (T), 0, m_extra_size); >+ return ::new (ptr) T; >+ } >+ else >+ return ptr; > } > > /* Puts PTR back on POOL's free list. */ > >Would it be suitable?Suitable with the memset removed, yes.
Thanks, Pat
