<div dir="ltr">I assume there's an implied "merge to 5.0 branch?" question here :)<div><br></div><div>Yes, horrible as lax vector conversions are, we shouldn't accidentally regress support for them.<br><div class="gmail_extra"><br><div class="gmail_quote">On 1 August 2017 at 16:28, Hans Wennborg via cfe-commits <span dir="ltr"><<a href="mailto:cfe-commits@lists.llvm.org" target="_blank">cfe-commits@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Sounds good to me. Richard, what do you think?<br>
<div class="HOEnZb"><div class="h5"><br>
On Tue, Aug 1, 2017 at 12:05 PM, Bruno Cardoso Lopes via cfe-commits<br>
<<a href="mailto:cfe-commits@lists.llvm.org">cfe-commits@lists.llvm.org</a>> wrote:<br>
> Author: bruno<br>
> Date: Tue Aug  1 12:05:25 2017<br>
> New Revision: 309722<br>
><br>
> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=309722&view=rev" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project?rev=309722&view=rev</a><br>
> Log:<br>
> [Sema] Fix lax conversion between non ext vectors<br>
><br>
> r282968 introduced a regression due to the lack of proper testing.<br>
> Re-add lax conversion support between non ext vectors for compound<br>
> assignments and add a test for that.<br>
><br>
> rdar://problem/28639467<br>
><br>
> Modified:<br>
>     cfe/trunk/lib/Sema/SemaExpr.<wbr>cpp<br>
>     cfe/trunk/test/Sema/vector-<wbr>cast.c<br>
><br>
> Modified: cfe/trunk/lib/Sema/SemaExpr.<wbr>cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaExpr.cpp?rev=309722&r1=309721&r2=309722&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/cfe/trunk/lib/Sema/<wbr>SemaExpr.cpp?rev=309722&r1=<wbr>309721&r2=309722&view=diff</a><br>
> ==============================<wbr>==============================<wbr>==================<br>
> --- cfe/trunk/lib/Sema/SemaExpr.<wbr>cpp (original)<br>
> +++ cfe/trunk/lib/Sema/SemaExpr.<wbr>cpp Tue Aug  1 12:05:25 2017<br>
> @@ -8288,7 +8288,7 @@ QualType Sema::CheckVectorOperands(<wbr>ExprR<br>
>      // type. Note that this is already done by non-compound assignments in<br>
>      // CheckAssignmentConstraints. If it's a scalar type, only bitcast for<br>
>      // <1 x T> -> T. The result is also a vector type.<br>
> -    } else if (OtherType->isExtVectorType() ||<br>
> +    } else if (OtherType->isExtVectorType() || OtherType->isVectorType() ||<br>
>                 (OtherType->isScalarType() && VT->getNumElements() == 1)) {<br>
>        ExprResult *RHSExpr = &RHS;<br>
>        *RHSExpr = ImpCastExprToType(RHSExpr-><wbr>get(), LHSType, CK_BitCast);<br>
><br>
> Modified: cfe/trunk/test/Sema/vector-<wbr>cast.c<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Sema/vector-cast.c?rev=309722&r1=309721&r2=309722&view=diff" rel="noreferrer" target="_blank">http://llvm.org/viewvc/llvm-<wbr>project/cfe/trunk/test/Sema/<wbr>vector-cast.c?rev=309722&r1=<wbr>309721&r2=309722&view=diff</a><br>
> ==============================<wbr>==============================<wbr>==================<br>
> --- cfe/trunk/test/Sema/vector-<wbr>cast.c (original)<br>
> +++ cfe/trunk/test/Sema/vector-<wbr>cast.c Tue Aug  1 12:05:25 2017<br>
> @@ -48,6 +48,9 @@ typedef float float2 __attribute__ ((vec<br>
>  typedef __attribute__((vector_size(8))<wbr>) double float64x1_t;<br>
>  typedef __attribute__((vector_size(16)<wbr>)) double float64x2_t;<br>
>  float64x1_t vget_low_f64(float64x2_t __p0);<br>
> +typedef float float16 __attribute__((__vector_size__<wbr>(16)));<br>
> +typedef signed int vSInt32 __attribute__((__vector_size__<wbr>(16)));<br>
> +typedef unsigned int vUInt32 __attribute__((__vector_size__<wbr>(16)));<br>
><br>
>  void f4() {<br>
>    float2 f2;<br>
> @@ -73,3 +76,8 @@ void f5() {<br>
>    v = ptr; // expected-error-re {{assigning to 'short_sizeof_pointer' (vector of {{[0-9]+}} 'short' values) from incompatible type 'void *'}}<br>
>    ptr = v; // expected-error {{assigning to 'void *' from incompatible type 'short_sizeof_pointer'}}<br>
>  }<br>
> +<br>
> +void f6(vSInt32 a0) {<br>
> +  vUInt32 counter = (float16){0.0f, 0.0f, 0.0f, 0.0f}; // expected-warning {{incompatible vector types initializing 'vUInt32' (vector of 4 'unsigned int' values) with an expression of type 'float16' (vector of 4 'float' values)}}<br>
> +  counter -= a0;<br>
> +}<br>
><br>
><br>
> ______________________________<wbr>_________________<br>
> cfe-commits mailing list<br>
> <a href="mailto:cfe-commits@lists.llvm.org">cfe-commits@lists.llvm.org</a><br>
> <a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/cfe-commits</a><br>
______________________________<wbr>_________________<br>
cfe-commits mailing list<br>
<a href="mailto:cfe-commits@lists.llvm.org">cfe-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/<wbr>mailman/listinfo/cfe-commits</a><br>
</div></div></blockquote></div><br></div></div></div>