This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH, rs6000] Use unaligned vector types for some pointer casts


Just to follow up...


On 10/21/18 6:13 PM, Bill Schmidt wrote:
> On 10/20/18 10:53 AM, Segher Boessenkool wrote:
>> Hi!
>>
>> On Fri, Oct 19, 2018 at 04:27:27PM -0500, Bill Schmidt wrote:
>>> The x86 intrinsic compatibility headers contain a couple of instances of
>>> undefined behavior where a cast to an aligned type is used when that
>>> alignment is not guaranteed by the expression to be cast from.  This
>>> patch fixes that problem by replacing the aligned types with unaligned
>>> versions of the same type.
>> How did you find these?  What I'm after is, did you find all instances?
> Jinsong found these by using the test cases for these header files when
> incorporating the headers into Clang.  I will ask him whether he scanned
> for additional similar cases.

Only one of the issues was found by test case.  The rest were found by
scanning.

Thanks,
Bill

>
>>> --- gcc/config/rs6000/xmmintrin.h	(revision 265318)
>>> +++ gcc/config/rs6000/xmmintrin.h	(working copy)
>>> @@ -85,6 +85,9 @@
>>>     vector types, and their scalar components.  */
>>>  typedef float __m128 __attribute__ ((__vector_size__ (16), __may_alias__));
>>>  
>>> +/* Unaligned version of the same type.  */
>>> +typedef float __m128_u __attribute__ ((__vector_size__ (16), __may_alias__));
>> This is identical to __m128.  Do you want aligned(1) as well?
> Argh, yes.  I failed to copy this correctly from Jinsong.  I will re-test before
> applying.
>
> Thanks!
> Bill
>
>> Okay for trunk if you want that; if not, this needs explanation (a code
>> comment or similar).
>>
>> Thanks!
>>
>>
>> Segher
>>


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]