]> granicus.if.org Git - clang/commitdiff
[MS ABI] Create a mangling for extended vector types
authorDavid Majnemer <david.majnemer@gmail.com>
Sat, 1 Aug 2015 05:51:55 +0000 (05:51 +0000)
committerDavid Majnemer <david.majnemer@gmail.com>
Sat, 1 Aug 2015 05:51:55 +0000 (05:51 +0000)
Extended vector types are mangled just like normal vector types.

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

lib/AST/MicrosoftMangle.cpp
test/CodeGenCXX/mangle-ms-vector-types.cpp

index 48a8fa541a69a3e272e9bc64852a94eeb9d62574..5c2b68cd62acf7cfa918517082eaa32460029714 100644 (file)
@@ -2076,13 +2076,9 @@ void MicrosoftCXXNameMangler::mangleType(const VectorType *T, Qualifiers Quals,
   Out << "@@";
 }
 
-void MicrosoftCXXNameMangler::mangleType(const ExtVectorType *T, Qualifiers,
-                                         SourceRange Range) {
-  DiagnosticsEngine &Diags = Context.getDiags();
-  unsigned DiagID = Diags.getCustomDiagID(DiagnosticsEngine::Error,
-    "cannot mangle this extended vector type yet");
-  Diags.Report(Range.getBegin(), DiagID)
-    << Range;
+void MicrosoftCXXNameMangler::mangleType(const ExtVectorType *T,
+                                         Qualifiers Quals, SourceRange Range) {
+  mangleType(static_cast<const VectorType *>(T), Quals, Range);
 }
 void MicrosoftCXXNameMangler::mangleType(const DependentSizedExtVectorType *T,
                                          Qualifiers, SourceRange Range) {
index aca492918a1e78deba54c17cb7ca21a55a5a5456..5aca4551cebc9c890c92d6ff97177b1cc2b66946 100644 (file)
@@ -29,5 +29,9 @@ void foo256i(__m256i) {}
 void foov8hi(__v8hi) {}
 // CHECK: define void @"\01?foov8hi@@YAXT__clang_vec8_F@@@Z"
 
+typedef __attribute__((ext_vector_type(4))) int vi4b;
+void foovi4b(vi4b) {}
+// CHECK: define void @"\01?foovi4b@@YAXT__clang_vec4_H@@@Z"
+
 // Clang does not support vectors of complex types, so we can't test the
 // mangling of them.