[PATCH] D21678: Fix For pr28288 - Error message in shift of vector values

Akira Hatanaka via cfe-commits cfe-commits at lists.llvm.org
Tue Sep 6 15:09:52 PDT 2016


This is urgent, so I’ve tried to come up with a patch to fix this. I tried reverting r278501 and then made changes to have Sema::CheckVectorOperands call tryVectorConvertAndSplat when the vector type is a normal gcc vector. This fixes the test case I sent and also doesn’t affect the regression tests except that clang prints different error messages in a few cases and doesn’t print an expected diagnostic in one case, which is line 63 of test/Sema/vector-cast.c. We currently expect clang to print a diagnostic when we have a compound assignment like “double += <1 X double>”, but my patch makes clang accept it.

> On Sep 5, 2016, at 6:36 AM, Vladimir Yakovlev via cfe-commits <cfe-commits at lists.llvm.org> wrote:
> 
> I'll fix this.
> 
> 
> 
> Vladimir
> 
> 
> 
> -----------------------------------------------------------------------------------
> 
> From: Akira Hatanaka <ahatanak at gmail.com <mailto:ahatanak at gmail.com>>
> Date: Fri, Sep 2, 2016 at 3:00 AM
> Subject: Re: [PATCH] D21678: Fix For pr28288 - Error message in shift of vector values
> To: vladimir.1 at gmail.com <mailto:vladimir.1 at gmail.com>, ulrich.weigand at de.ibm.com <mailto:ulrich.weigand at de.ibm.com>, amjad.aboud at intel.com <mailto:amjad.aboud at intel.com>, guy.benyei at intel.com <mailto:guy.benyei at intel.com>, aaron.ballman at gmail.com <mailto:aaron.ballman at gmail.com>
> Cc: ahatanak at gmail.com <mailto:ahatanak at gmail.com>, andreybokhanko at gmail.com <mailto:andreybokhanko at gmail.com>, anastasia.stulova at arm.com <mailto:anastasia.stulova at arm.com>, dmitry.polukhin at gmail.com <mailto:dmitry.polukhin at gmail.com>, cfe-commits at lists.llvm.org <mailto:cfe-commits at lists.llvm.org>
> 
> 
> ahatanak added a subscriber: ahatanak.
> ahatanak added a comment.
> 
> This patch causes clang to error out on the following code, which used to compile fine:
> 
> $ cat f2.c
> 
>   typedef __attribute__((__ext_vector_type__(8))) unsigned short vector_ushort8;
> 
>   vector_ushort8 foo1(void) {
>     return 1 << (vector_ushort8){7,6,5,4,3,2,1,0};
>   }
> 
> $ clang f2.c -c
> 
> clang used to transform the scaler operand to a vector operand (similar to the way gcc's vector is handled) when compiling for normal c/c++ (but printed an error message when compiling for opencl), but this patch dropped the check for LangOpts added in r230464 and changed that behavior. I don't think this was intentional?
> 
> 
> 
> Repository:
>   rL LLVM
> 
> https://reviews.llvm.org/D21678 <https://reviews.llvm.org/D21678>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20160906/b5c80c34/attachment-0001.html>


More information about the cfe-commits mailing list