From: Fariborz Jahanian Date: Mon, 7 Apr 2014 16:32:54 +0000 (+0000) Subject: Revert r205646 (keeping the test in its modified form) as X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=29fd71eaff2c371eb7b4b6389212d3510f7582ba;p=clang Revert r205646 (keeping the test in its modified form) as it is subsumed by r205521. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@205718 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Sema/SemaChecking.cpp b/lib/Sema/SemaChecking.cpp index 9cd44d2cae..b824ec4825 100644 --- a/lib/Sema/SemaChecking.cpp +++ b/lib/Sema/SemaChecking.cpp @@ -6113,21 +6113,12 @@ void CheckConditionalOperator(Sema &S, ConditionalOperator *E, /// implicit conversions in the given expression. There are a couple /// of competing diagnostics here, -Wconversion and -Wsign-compare. void AnalyzeImplicitConversions(Sema &S, Expr *OrigE, SourceLocation CC) { + QualType T = OrigE->getType(); Expr *E = OrigE->IgnoreParenImpCasts(); if (E->isTypeDependent() || E->isValueDependent()) return; - QualType T = OrigE->getType(); - // Check for conversion from an arithmetic type to a vector of arithmetic - // type elements. Warn if this results in truncation of each vector element. - if (isa(E)) { - if (ImplicitCastExpr *ICE = dyn_cast(OrigE)) - if ((ICE->getCastKind() == CK_VectorSplat) && - !T.isNull() && T->isExtVectorType()) - T = cast(T.getCanonicalType())->getElementType(); - } - // For conditional operators, we analyze the arguments as if they // were being fed directly into the output. if (isa(E)) { diff --git a/test/Sema/conversion.c b/test/Sema/conversion.c index 121f2d40bb..89c34c6a22 100644 --- a/test/Sema/conversion.c +++ b/test/Sema/conversion.c @@ -426,6 +426,6 @@ typedef __attribute__ ((ext_vector_type( 8),__aligned__( 32))) uint32_t uint8; void test27(ushort16 constants) { uint8 pairedConstants = (uint8) constants; - ushort16 crCbScale = pairedConstants.s4; // expected-warning {{implicit conversion loses integer precision: 'uint32_t' (aka 'unsigned int') to 'unsigned short'}} - ushort16 brBias = pairedConstants.s6; // expected-warning {{implicit conversion loses integer precision: 'uint32_t' (aka 'unsigned int') to 'unsigned short'}} + ushort16 crCbScale = pairedConstants.s4; // expected-warning {{implicit conversion loses integer precision: 'uint32_t' (aka 'unsigned int') to 'ushort16'}} + ushort16 brBias = pairedConstants.s6; // expected-warning {{implicit conversion loses integer precision: 'uint32_t' (aka 'unsigned int') to 'ushort16'}} }