]> granicus.if.org Git - clang/commitdiff
A few style changes.
authorTanya Lattner <tonic@nondot.org>
Thu, 19 Jan 2012 01:16:16 +0000 (01:16 +0000)
committerTanya Lattner <tonic@nondot.org>
Thu, 19 Jan 2012 01:16:16 +0000 (01:16 +0000)
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

include/clang/Sema/Sema.h
lib/Sema/SemaExpr.cpp
test/CodeGenOpenCL/vector_logops.cl [new file with mode: 0644]

index 1320a05176dcfe94414ae7b0a4af8311247f3a17..c09d41af58069e0be14b46116982e01338cc39a5 100644 (file)
@@ -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)
index 662971f7decab7df82713791f5d11c0f11a1fd0e..1bb4140bd046bc775589e05be58bb58274641e3c 100644 (file)
@@ -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 (file)
index 0000000..388f1d7
--- /dev/null
@@ -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
+}
+