diff options
-rw-r--r-- | include/clang/Basic/Builtins.def | 3 | ||||
-rw-r--r-- | lib/AST/ASTContext.cpp | 13 |
2 files changed, 15 insertions, 1 deletions
diff --git a/include/clang/Basic/Builtins.def b/include/clang/Basic/Builtins.def index 756ba23626..63e8d08642 100644 --- a/include/clang/Basic/Builtins.def +++ b/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/lib/AST/ASTContext.cpp b/lib/AST/ASTContext.cpp index bd68d83250..47b286233e 100644 --- a/lib/AST/ASTContext.cpp +++ b/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); |