On December 5, 2019 2:03:58 PM GMT+01:00, "Martin Liška" <mli...@suse.cz> wrote: >On 12/5/19 1:59 PM, Richard Biener wrote: >> Isn't there ggc_alloc <T> for this? Also ggc_alloc_no_dtor<T> in >case you >> want to handle finalization yourself. > >No, if I see correctly it only calls Dtor:
But its odd to handle finalization but not construction here and not finalization in your new wrapper. That doesn't look like a good API. I see Honza approved the change but maybe you can fix the actual issue without this new API for the moment. Richard. >template<typename T> >inline T * >ggc_alloc (ALONE_CXX_MEM_STAT_INFO) >{ > if (need_finalization_p<T> ()) >return static_cast<T *> (ggc_internal_alloc (sizeof (T), finalize<T>, >0, 1 > PASS_MEM_STAT)); > else > return static_cast<T *> (ggc_internal_alloc (sizeof (T), NULL, 0, 1 > PASS_MEM_STAT)); >} > >... > >/* Allocate a chunk of memory of SIZE bytes. Its contents are >undefined. */ > >void * >ggc_internal_alloc (size_t size, void (*f)(void *), size_t s, size_t n > MEM_STAT_DECL) >{ >... > >The function is generic, it does not know about type T. That's why it >does not (and can't call) ctor. > >Martin