bruno added a comment. Hi,
Nice, thanks for working on this! ================ Comment at: lib/Sema/SemaExpr.cpp:8051 + if (!LHSVecType) { + assert(RHSVecType && "RHSVecType is not a vector!"); if (!tryVectorConvertAndSplat(*this, (IsCompAssign ? nullptr : &LHS), ---------------- `tryVectorConvertAndSplat` does more than plain scalar splat; it supports a more general type of CK_IntegralCast, see the comment on one of your changes to the tests below. I suggest that instead of reusing this function, you should create another one that only handles the cases we actually want to support for non-ext vectors (i.e. for GCC compat). ================ Comment at: test/Sema/vector-cast.c:57 + // FIXME: This lacks a diagnostic: should complain that 'double' to vector 'float2' involves truncation + f2 += d; + d += f2; // expected-error {{assigning to 'double' from incompatible type 'float2' (vector of 2 'float' values)}} ---------------- This is not right. The fact that we don't have the appropriate diagnostics here doesn't mean we should accept this. For instance, this is what we get with GCC: error: conversion of scalar 'double' to vector 'float2 {aka __vector(2) float}' involves truncation ================ Comment at: test/Sema/vector-scalar-implict-conv.c:2 +// RUN: %clang_cc1 %s -verify -fsyntax-only -Weverything + +typedef long long v2i64 __attribute__((vector_size(16))); ---------------- Can you rename this to vector-gcc-compat.c? It would also be nice to split functionality being tested within their own function, e.g.: arithmetic, logic, vector comparisons. https://reviews.llvm.org/D25866 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits