Pointless use of restrict

Marcus Clyne maccaday@gmail.com
Mon Aug 17 11:13:00 GMT 2009

Marcus Clyne wrote:
> Hi,
> Am I right in saying that defining a function like
> func_name (my_type_t * __restrict);
> is pointless, because there are no other pointers that the pointer 
> could overlap with?
I was thinking about just in the parameters passed, but is the restrict 
setting also relevant to pointers that could be referenced in a circular 
fashion - e.g.

typedef struct   my_s   my_t;

struct my_s {
   my_t   *p;

my_t   var1, var2;

var1.p = &var2;
var2.p = &var1;

Assuming some kind of situation like this, when passing one of the 
variables above to a function, should you avoid putting a __restrict in 
the function definition because it might cause problems if you were to 
follow a pointer chain and change variables?
> Can anyone explain what GCC does differently for the two following 
> definitions:
> func1 (my_type_t * __restrict, my_type_t *__restrict);
> func2 (my_type_t *, my_type_t *);
> ?
> Thanks,
> Marcus.

More information about the Gcc-help mailing list