[cfe-commits] r92278 - /cfe/trunk/lib/CodeGen/CGRTTI.cpp

Anders Carlsson andersca at mac.com
Tue Dec 29 14:30:11 PST 2009


Author: andersca
Date: Tue Dec 29 16:30:11 2009
New Revision: 92278

URL: http://llvm.org/viewvc/llvm-project?rev=92278&view=rev
Log:
Match gcc and treat vector types as fundamental types.

Modified:
    cfe/trunk/lib/CodeGen/CGRTTI.cpp

Modified: cfe/trunk/lib/CodeGen/CGRTTI.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGRTTI.cpp?rev=92278&r1=92277&r2=92278&view=diff

==============================================================================
--- cfe/trunk/lib/CodeGen/CGRTTI.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGRTTI.cpp Tue Dec 29 16:30:11 2009
@@ -371,11 +371,9 @@
     case Type::IncompleteArray:
     case Type::VariableArray:
     case Type::Enum:
-      return BuildTypeInfo(Ty);
-
     case Type::Vector:
     case Type::ExtVector:
-      return BuildSimpleType(Ty, "_ZTVN10__cxxabiv117__array_type_infoE");
+      return BuildTypeInfo(Ty);
     }
   }
   
@@ -649,6 +647,8 @@
     return llvm::GlobalValue::ExternalLinkage;
   }
 
+  case Type::Vector:
+  case Type::ExtVector:
   case Type::Builtin:
     return llvm::GlobalValue::WeakODRLinkage;
 
@@ -691,6 +691,13 @@
   switch (Ty->getTypeClass()) {
   default: assert(0 && "Unhandled type!");
 
+  // GCC treats vector types as fundamental types.
+  case Type::Vector:
+  case Type::ExtVector:
+    // abi::__fundamental_type_info
+    VtableName = "_ZTVN10__cxxabiv123__fundamental_type_infoE";
+    break;
+
   case Type::ConstantArray:
   case Type::IncompleteArray:
     // abi::__array_type_info
@@ -774,21 +781,28 @@
     assert(false && "Builtin type info must be in the standard library!");
     break;
 
+  // GCC treats vector types as fundamental types.
+  case Type::Vector:
+  case Type::ExtVector:
+    // Itanium C++ ABI 2.9.5p4:
+    // abi::__fundamental_type_info adds no data members to std::type_info.
+    break;
+      
   case Type::ConstantArray:
   case Type::IncompleteArray:
-    // Itanium C++ ABI 2.9.5p4:
-    // abi::__array_type_info adds no data members to std::type_info;
+    // Itanium C++ ABI 2.9.5p5:
+    // abi::__array_type_info adds no data members to std::type_info.
     break;
 
   case Type::FunctionNoProto:
   case Type::FunctionProto:
-    // Itanium C++ ABI 2.9.5p4:
-    // abi::__function_type_info adds no data members to std::type_info;
+    // Itanium C++ ABI 2.9.5p5:
+    // abi::__function_type_info adds no data members to std::type_info.
     break;
 
   case Type::Enum:
-    // Itanium C++ ABI 2.9.5p4:
-    // abi::__enum_type_info adds no data members to std::type_info;
+    // Itanium C++ ABI 2.9.5p5:
+    // abi::__enum_type_info adds no data members to std::type_info.
     break;
 
   case Type::Record: {





More information about the cfe-commits mailing list