]> granicus.if.org Git - clang/commitdiff
[index] Handle vector types in USR generator
authorAlex Lorenz <arphaman@gmail.com>
Fri, 28 Apr 2017 09:46:36 +0000 (09:46 +0000)
committerAlex Lorenz <arphaman@gmail.com>
Fri, 28 Apr 2017 09:46:36 +0000 (09:46 +0000)
rdar://25339187

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@301635 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Index/USRGeneration.cpp
test/Index/usrs.cpp

index ed469f677a34e4cabd7329e06b709659f057065d..044edf715fc2b1e989e905ff02faddd1e2a798d5 100644 (file)
@@ -811,7 +811,13 @@ void USRGenerator::VisitType(QualType T) {
       T = InjT->getInjectedSpecializationType();
       continue;
     }
-    
+    if (const auto *VT = T->getAs<VectorType>()) {
+      Out << (T->isExtVectorType() ? ']' : '[');
+      Out << VT->getNumElements();
+      T = VT->getElementType();
+      continue;
+    }
+
     // Unhandled type.
     Out << ' ';
     break;
index 8ad17021b50da3feed61c759fe8ab8a343d98ff2..2bd5744371aded899fbe921054e4b9c522e46289 100644 (file)
@@ -95,6 +95,14 @@ class TC1 {
   void meth(TC1);
 };
 
+typedef __attribute__((__ext_vector_type__(3))) float float3;
+
+typedef float __m128 __attribute__((__vector_size__(16)));
+
+float3 vectorOverload(float3 f);
+
+__m128 vectorOverload(__m128 f);
+
 // RUN: c-index-test -test-load-source-usrs all -fno-delayed-template-parsing %s | FileCheck %s
 // CHECK: usrs.cpp c:@N@foo Extent=[1:1 - 4:2]
 // CHECK: usrs.cpp c:@N@foo@x Extent=[2:3 - 2:8]
@@ -172,3 +180,6 @@ class TC1 {
 // CHECK: usrs.cpp c:usrs.cpp@S@usrs.cpp@1510@FI@x Extent=[91:10 - 91:15]
 
 // CHECK: usrs.cpp c:@ST>1#T@TC1@F@meth#>@ST>1#T@TC11t0.0# Extent=[95:3 - 95:17]
+
+// CHECK: usrs.cpp c:@F@vectorOverload#]3f# Extent=[102:1 - 102:32]
+// CHECK: usrs.cpp c:@F@vectorOverload#[4f# Extent=[104:1 - 104:32]