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 > <[email protected]> wrote: > > I'll fix this. > > > > Vladimir > > > > ----------------------------------------------------------------------------------- > > From: Akira Hatanaka <[email protected] <mailto:[email protected]>> > Date: Fri, Sep 2, 2016 at 3:00 AM > Subject: Re: [PATCH] D21678: Fix For pr28288 - Error message in shift of > vector values > To: [email protected] <mailto:[email protected]>, > [email protected] <mailto:[email protected]>, > [email protected] <mailto:[email protected]>, [email protected] > <mailto:[email protected]>, [email protected] > <mailto:[email protected]> > Cc: [email protected] <mailto:[email protected]>, [email protected] > <mailto:[email protected]>, [email protected] > <mailto:[email protected]>, [email protected] > <mailto:[email protected]>, [email protected] > <mailto:[email protected]> > > > 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 > [email protected] > http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
_______________________________________________ cfe-commits mailing list [email protected] http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
