summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2012-06-07 18:08:25 +0000
committerDouglas Gregor <dgregor@apple.com>2012-06-07 18:08:25 +0000
commitfed6699dd9d7b27bbbc52644cc14a855b09913c4 (patch)
tree7fc6c985dca9080536b541ac816d637dac52fcbf
parent48687a5a00d1c985aeed2068249be59fa980eb46 (diff)
downloadbcm5719-llvm-fed6699dd9d7b27bbbc52644cc14a855b09913c4.tar.gz
bcm5719-llvm-fed6699dd9d7b27bbbc52644cc14a855b09913c4.zip
Add ext_vector type code for builtins, from John Garvin!
llvm-svn: 158156
-rw-r--r--clang/include/clang/Basic/Builtins.def3
-rw-r--r--clang/lib/AST/ASTContext.cpp13
2 files changed, 15 insertions, 1 deletions
diff --git a/clang/include/clang/Basic/Builtins.def b/clang/include/clang/Basic/Builtins.def
index 756ba236269..63e8d08642a 100644
--- a/clang/include/clang/Basic/Builtins.def
+++ b/clang/include/clang/Basic/Builtins.def
@@ -33,7 +33,8 @@
// H -> SEL
// a -> __builtin_va_list
// A -> "reference" to __builtin_va_list
-// V -> Vector, following num elements and a base type.
+// V -> Vector, followed by the number of elements and the base type.
+// E -> ext_vector, followed by the number of elements and the base type.
// X -> _Complex, followed by the base type.
// Y -> ptrdiff_t
// P -> FILE
diff --git a/clang/lib/AST/ASTContext.cpp b/clang/lib/AST/ASTContext.cpp
index bd68d832500..47b286233e5 100644
--- a/clang/lib/AST/ASTContext.cpp
+++ b/clang/lib/AST/ASTContext.cpp
@@ -6413,6 +6413,19 @@ static QualType DecodeTypeFromStr(const char *&Str, const ASTContext &Context,
VectorType::GenericVector);
break;
}
+ case 'E': {
+ char *End;
+
+ unsigned NumElements = strtoul(Str, &End, 10);
+ assert(End != Str && "Missing vector size");
+
+ Str = End;
+
+ QualType ElementType = DecodeTypeFromStr(Str, Context, Error, RequiresICE,
+ false);
+ Type = Context.getExtVectorType(ElementType, NumElements);
+ break;
+ }
case 'X': {
QualType ElementType = DecodeTypeFromStr(Str, Context, Error, RequiresICE,
false);
OpenPOWER on IntegriCloud