http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55916
--- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> 2013-01-09
13:38:12 UTC ---
(In reply to comment #3)
> (In reply to comment #2)
> > (In reply to comment #1)
> > > posix_memalign unfortunately has a weird enough interface that we can't
> > > easily extract alignment for the pointer.
> >
> > Is it just because it outputs through a pointer? Are aligned_alloc,
> > memalign
> > and others easier then?
>
> Yes.
We can of course apply the same trick as we do for sincos - transform it to
({ void *tem; int ret;
tem = __builtin_gcc_posix_memalign (&res, alignment, size);
*memptr = tem;
ret; })
and then expand it to RTL as posix_memalign using another memory temporary ...
The issue with such return is that we cannot see all possible uses of the
return-by-reference value which is easy to do if it is the actual return
value.
Possibly an alloc_align attribute would be useful as well.