зеркало из https://github.com/microsoft/clang-1.git
Explicitly handle every case in the switch in RTTIBuilder::BuildTypeInfo.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@111085 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
48d64fbb31
Коммит
f2aabe199a
|
@ -545,18 +545,31 @@ llvm::Constant *RTTIBuilder::BuildTypeInfo(QualType Ty, bool Force) {
|
|||
Fields.push_back(BuildName(Ty, DecideHidden(Ty), Linkage));
|
||||
|
||||
switch (Ty->getTypeClass()) {
|
||||
default: assert(false && "Unhandled type class!");
|
||||
#define TYPE(Class, Base)
|
||||
#define ABSTRACT_TYPE(Class, Base)
|
||||
#define NON_CANONICAL_UNLESS_DEPENDENT_TYPE(Class, Base) case Type::Class:
|
||||
#define NON_CANONICAL_TYPE(Class, Base) case Type::Class:
|
||||
#define DEPENDENT_TYPE(Class, Base) case Type::Class:
|
||||
#include "clang/AST/TypeNodes.def"
|
||||
assert(false && "Non-canonical and dependent types shouldn't get here");
|
||||
|
||||
// GCC treats vector types as fundamental types.
|
||||
case Type::Builtin:
|
||||
case Type::Vector:
|
||||
case Type::ExtVector:
|
||||
case Type::Complex:
|
||||
case Type::BlockPointer:
|
||||
// Itanium C++ ABI 2.9.5p4:
|
||||
// abi::__fundamental_type_info adds no data members to std::type_info.
|
||||
break;
|
||||
|
||||
|
||||
case Type::LValueReference:
|
||||
case Type::RValueReference:
|
||||
assert(false && "References shouldn't get here");
|
||||
|
||||
case Type::ConstantArray:
|
||||
case Type::IncompleteArray:
|
||||
case Type::VariableArray:
|
||||
// Itanium C++ ABI 2.9.5p5:
|
||||
// abi::__array_type_info adds no data members to std::type_info.
|
||||
break;
|
||||
|
|
Загрузка…
Ссылка в новой задаче