On Thu, Jan 8, 2009 at 1:36 PM, Richard Guenther
<richard.guent...@gmail.com> wrote:
> On Thu, Jan 8, 2009 at 10:17 PM, H.J. Lu <hjl.to...@gmail.com> wrote:
>> On Thu, Jan 8, 2009 at 12:40 PM, Ian Lance Taylor <i...@google.com> wrote:
>>> "H.J. Lu" <hjl.to...@gmail.com> writes:
>>>
>>>> We can solve it with
>>>>
>>>> 1. A target should define MALLOC_ABI_ALIGNMENT properly.
>>>> 2. g++ should issue an error when the default new operator
>>>> is used on a type whose alignment is greater than
>>>> MALLOC_ABI_ALIGNMENT.
>>>> 3. It is user's responsibility to provide a new operator to return
>>>> a properly aligned memory.
>>>> 4. g++ can assume memory return by the user-provided new
>>>> operator is properly aligned.
>>>
>>> Sounds good as far as it goes.  How do we get there from here?  What
>>> should the behaviour of __attribute__ ((aligned)) be?  Should we add
>>
>> For 4.4, we can apply my patch:
>>
>> http://gcc.gnu.org/ml/gcc-patches/2009-01/msg00367.html
>>
>> and update document with
>>
>> As in the preceding examples, you can explicitly specify the alignment
>> (in bytes) that you wish the compiler to use for a given variable or
>> structure field.  Alternatively, you can leave out the alignment factor
>> and just ask the compiler to align a variable or field to the maximum
>> useful alignment for the target ABI you are compiling for.  For
>> example, you could write:
>>
>> @smallexample
>> short array[3] __attribute__ ((aligned));
>> @end smallexample
>>
>> Whenever you leave out the alignment factor in an @code{aligned} attribute
>> specification, the compiler automatically sets the alignment for the declared
>> variable or field to the largest alignment for the target ABI you are
>> compiling for.  Doing this can often make copy operations more efficient,
>> because the compiler can use whatever instructions copy the biggest
>> chunks of memory when performing copies to or from the variables or
>> fields that you have aligned this way.
>
> I don't think we should encourage more uses of __attribute__((aligned)).
>

Then we can leave minimum documentation for __attribute__((aligned))
and remove example.


-- 
H.J.

Reply via email to