[cfe-commits] r106596 - in /cfe/trunk: lib/AST/Type.cpp test/Sema/ext_vector_casts.c

Douglas Gregor dgregor at apple.com
Tue Jun 22 16:13:52 PDT 2010


Author: dgregor
Date: Tue Jun 22 18:13:52 2010
New Revision: 106596

URL: http://llvm.org/viewvc/llvm-project?rev=106596&view=rev
Log:
Teach Type::isRealType() that vector types are never real types. All
of the callers of isRealType() already assumed this, and one of them
(increment/decrement) mistakenly permitted increments of vector types
because of it.

Modified:
    cfe/trunk/lib/AST/Type.cpp
    cfe/trunk/test/Sema/ext_vector_casts.c

Modified: cfe/trunk/lib/AST/Type.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/Type.cpp?rev=106596&r1=106595&r2=106596&view=diff
==============================================================================
--- cfe/trunk/lib/AST/Type.cpp (original)
+++ cfe/trunk/lib/AST/Type.cpp Tue Jun 22 18:13:52 2010
@@ -585,8 +585,6 @@
            BT->getKind() <= BuiltinType::LongDouble;
   if (const TagType *TT = dyn_cast<TagType>(CanonicalType))
     return TT->getDecl()->isEnum() && TT->getDecl()->isDefinition();
-  if (const VectorType *VT = dyn_cast<VectorType>(CanonicalType))
-    return VT->getElementType()->isRealType();
   return false;
 }
 

Modified: cfe/trunk/test/Sema/ext_vector_casts.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Sema/ext_vector_casts.c?rev=106596&r1=106595&r2=106596&view=diff
==============================================================================
--- cfe/trunk/test/Sema/ext_vector_casts.c (original)
+++ cfe/trunk/test/Sema/ext_vector_casts.c Tue Jun 22 18:13:52 2010
@@ -45,3 +45,7 @@
 }
 
 typedef __attribute__(( ext_vector_type(2) )) float2 vecfloat2; // expected-error{{invalid vector type 'float2'}}
+
+void inc(float2 f2) {
+  f2++; // expected-error{{cannot increment value of type 'float2'}}
+}





More information about the cfe-commits mailing list