From: Tanya Lattner Date: Thu, 19 Jan 2012 01:16:16 +0000 (+0000) Subject: A few style changes. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b0f9dd22bf469028b2c40eab60ad1019c3e6089d;p=clang A few style changes. Change CheckVectorLogicalOperands to pass params by ref. Add another test case. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@148452 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/Sema/Sema.h b/include/clang/Sema/Sema.h index 1320a05176..c09d41af58 100644 --- a/include/clang/Sema/Sema.h +++ b/include/clang/Sema/Sema.h @@ -5938,7 +5938,7 @@ public: QualType GetSignedVectorType(QualType V); QualType CheckVectorCompareOperands(ExprResult &LHS, ExprResult &RHS, SourceLocation Loc, bool isRelational); - QualType CheckVectorLogicalOperands(ExprResult LHS, ExprResult RHS, + QualType CheckVectorLogicalOperands(ExprResult &LHS, ExprResult &RHS, SourceLocation Loc); /// type checking declaration initializers (C99 6.7.8) diff --git a/lib/Sema/SemaExpr.cpp b/lib/Sema/SemaExpr.cpp index 662971f7de..1bb4140bd0 100644 --- a/lib/Sema/SemaExpr.cpp +++ b/lib/Sema/SemaExpr.cpp @@ -6944,9 +6944,8 @@ QualType Sema::CheckVectorCompareOperands(ExprResult &LHS, ExprResult &RHS, return GetSignedVectorType(LHSType); } -QualType Sema::CheckVectorLogicalOperands(ExprResult LHS, ExprResult RHS, - SourceLocation Loc) -{ +QualType Sema::CheckVectorLogicalOperands(ExprResult &LHS, ExprResult &RHS, + SourceLocation Loc) { // Ensure that either both operands are of the same vector type, or // one operand is of a vector type and the other is of its element type. QualType vType = CheckVectorOperands(LHS, RHS, Loc, false); @@ -8281,9 +8280,7 @@ ExprResult Sema::CreateBuiltinUnaryOp(SourceLocation OpLoc, Input = ImpCastExprToType(Input.take(), Context.BoolTy, ScalarTypeToBooleanCastKind(resultType)); } - } - else if (resultType->isExtVectorType()) { - // Handle vector types. + } else if (resultType->isExtVectorType()) { // Vector logical not returns the signed variant of the operand type. resultType = GetSignedVectorType(resultType); break; diff --git a/test/CodeGenOpenCL/vector_logops.cl b/test/CodeGenOpenCL/vector_logops.cl new file mode 100644 index 0000000000..388f1d7eb7 --- /dev/null +++ b/test/CodeGenOpenCL/vector_logops.cl @@ -0,0 +1,19 @@ +// RUN: %clang_cc1 -O3 %s -emit-llvm -o - | FileCheck %s + +typedef int int2 __attribute((ext_vector_type(2))); + +int test1() +{ + int2 a = (int2)(1,0); + int2 b = (int2)(1,1); + return (a&&b).x + (a||b).y; + // CHECK: ret i32 -2 +} + +int test2() +{ + int2 a = (int2)(1,0); + return (!a).y; + // CHECK: ret i32 -1 +} +