[llvm-dev] Default alignment for 'malloc'

Joerg Sonnenberger via llvm-dev llvm-dev at lists.llvm.org
Mon Oct 3 11:01:30 PDT 2016


On Mon, Oct 03, 2016 at 02:43:03PM +0200, Michael Kruse via llvm-dev wrote:
> 2016-10-03 13:55 GMT+02:00 Martin J. O'Riordan via llvm-dev
> <llvm-dev at lists.llvm.org>:
> > I am trying to implement some new alignment based optimisations in our
> > target backend, and I am wondering if there a way a target can specify that
> > ‘malloc’, ‘realloc’ and ‘calloc’ always return a pointer to memory that is
> > aligned to a particular boundary?
> 
> malloc is guaranteed to be properly aligned for any C type. This would
> be 8 bytes on most systems for double. However, I think in practice
> most modern implementations return 16-byte aligned pointers. I don't
> think there is a way to annotate calls malloc to have some specific
> alignment from the backend, that has effect on passes before the
> backend.

Note that this only applies to base types. Vector types certainly can
require larger alignment in practice and that's why posix_memalign
exists.

Joerg


More information about the llvm-dev mailing list