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

            Bug ID: 106850
           Summary: restrict type qualifier ignored on function return
                    type
           Product: gcc
           Version: 12.2.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
          Assignee: unassigned at gcc dot gnu.org
          Reporter: colomar.6.4.3 at gmail dot com
  Target Milestone: ---

Related: <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87313>

The description of the restrict qualifier would lead one to think that it can
be used as a standard way of describing a function that returns a unique
pointer, as the [[gnu::malloc]] attribute does in GNU C.

GCC currently ignores the qualifier, so it can't use it for the optimizations
that [[gnu::malloc]] allows, but if GCC didn't ignore the qualifier, it could
be used for that.

```c
#include <err.h>
#include <stddef.h>
#include <stdlib.h>
#include <stdio.h>

[[gnu::malloc(free)]]
void *restrict
my_malloc(size_t size)
{
        void *p;

        p = malloc(size);  
        if (!p)    
                err(EXIT_FAILURE, "malloc(2)");    

        return p;
}
```
```sh
$ cc -Wall -Wextra my_malloc.c -S
my_malloc.c:8:1: warning: type qualifiers ignored on function return type
[-Wignored-qualifiers]
    8 | my_malloc(size_t size)
      | ^~~~~~~~~
```

Could you please not ignore the qualifier, and treat it as synonym of
[[gnu::malloc]]?

Reply via email to