https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86488

            Bug ID: 86488
           Summary: malloc attribute when pointer is returned as part of a
                    struct
           Product: gcc
           Version: 9.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: gonzalobg88 at gmail dot com
  Target Milestone: ---

I am trying to implementing P0901r0 [0] in jemalloc. The signature of the new
memory allocation function looks like this: 

typedef struct {
        void *ptr;
        size_t usize;
} smallocx_return_t;
smallocx_return_t je_smallocx(size_t size, int flags); 

I'd like to set the "malloc" [1] attribute for this function but AFAICT this is
not currently possible for this new function because the pointer
smallocx_return_t::ptr is part of a struct. 

[0]: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0901r0.html

[1]: From https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html

> malloc
> This tells the compiler that a function is malloc-like, i.e., that the 
> pointer P 
> returned by the function cannot alias any other pointer valid when the 
> function 
> returns, and moreover no pointers to valid objects occur in any storage 
> addressed by P.
>
> Using this attribute can improve optimization. Functions like malloc and 
> calloc 
> have this property because they return a pointer to uninitialized or 
> zeroed-out 
> storage. However, functions like realloc do not have this property, as they 
> can 
> return a pointer to storage containing pointers.

Reply via email to