tech-userlevel archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

RE: aligned_alloc c11 function


One small thing.

I don't understand why we're doing this calculation as a while():

         * Adjust alignment to satisfy posix_memalign,
         * larger alignments satisfy smaller alignments.
        while (alignment < sizeof (void *)) {
                alignment <<= 1;

We know alignment is a power of two, therefore the result of this is a
constant and could be done as an if() with a 
pre-computed constant:

	if (alignment < MIN_ALIGNMENT)
		alignment = MIN_ALIGNMENT;

where MIN_ALIGNMENT is the smallest power of 2 not less than sizeof(void*).
(On all real platforms, MIN_ALIGNMENT == sizeof(void *) but a purist might
want to use compile-time log2 macros to compute MIN_ALIGNMENT.)

I feel that writing a while() in this context is bad style as it implies
that some iterative computation is being done. It's not at all an iterative
calculation, in fact.


> -----Original Message-----
> From: [mailto:tech-userlevel-
>] On Behalf Of Niclas Rosenvik
> Sent: Saturday, October 31, 2015 5:01
> To:
> Subject: Re: aligned_alloc c11 function
> Hi everyone, here is the second take on aligned_alloc, I have incorporated
> the changes suggested by Christos and Robert Elz.
> Ok to commit?
> Regards,
> Niclas Rosenvik

Home | Main Index | Thread Index | Old Index