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@lists.llvm.org> wrote: > > I'll fix this. > > > > Vladimir > > > > ----------------------------------------------------------------------------------- > > From: Akira Hatanaka <ahata...@gmail.com <mailto:ahata...@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: vladimi...@gmail.com <mailto:vladimi...@gmail.com>, > ulrich.weig...@de.ibm.com <mailto:ulrich.weig...@de.ibm.com>, > amjad.ab...@intel.com <mailto:amjad.ab...@intel.com>, guy.ben...@intel.com > <mailto:guy.ben...@intel.com>, aaron.ball...@gmail.com > <mailto:aaron.ball...@gmail.com> > Cc: ahata...@gmail.com <mailto:ahata...@gmail.com>, andreybokha...@gmail.com > <mailto:andreybokha...@gmail.com>, anastasia.stul...@arm.com > <mailto:anastasia.stul...@arm.com>, dmitry.poluk...@gmail.com > <mailto:dmitry.poluk...@gmail.com>, cfe-commits@lists.llvm.org > <mailto:cfe-commits@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@lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits