aboutsummaryrefslogtreecommitdiff
path: root/lib/AST
diff options
context:
space:
mode:
Diffstat (limited to 'lib/AST')
-rw-r--r--lib/AST/ASTContext.cpp10
-rw-r--r--lib/AST/Type.cpp22
-rw-r--r--lib/AST/TypeSerialization.cpp1
3 files changed, 11 insertions, 22 deletions
diff --git a/lib/AST/ASTContext.cpp b/lib/AST/ASTContext.cpp
index 702dba2431..749655d871 100644
--- a/lib/AST/ASTContext.cpp
+++ b/lib/AST/ASTContext.cpp
@@ -448,7 +448,6 @@ ASTContext::getTypeInfo(const Type *T) {
break;
}
case Type::Record:
- case Type::CXXRecord:
case Type::Enum: {
const TagType *TT = cast<TagType>(T);
@@ -1231,13 +1230,7 @@ QualType ASTContext::getTypeDeclType(TypeDecl *Decl, TypeDecl* PrevDecl) {
} else if (ObjCInterfaceDecl *ObjCInterface = dyn_cast<ObjCInterfaceDecl>(Decl))
return getObjCInterfaceType(ObjCInterface);
- if (CXXRecordDecl *CXXRecord = dyn_cast<CXXRecordDecl>(Decl)) {
- if (PrevDecl)
- Decl->TypeForDecl = PrevDecl->TypeForDecl;
- else
- Decl->TypeForDecl = new (*this,8) CXXRecordType(CXXRecord);
- }
- else if (RecordDecl *Record = dyn_cast<RecordDecl>(Decl)) {
+ if (RecordDecl *Record = dyn_cast<RecordDecl>(Decl)) {
if (PrevDecl)
Decl->TypeForDecl = PrevDecl->TypeForDecl;
else
@@ -2841,7 +2834,6 @@ QualType ASTContext::mergeTypes(QualType LHS, QualType RHS) {
case Type::FunctionNoProto:
return mergeFunctionTypes(LHS, RHS);
case Type::Record:
- case Type::CXXRecord:
case Type::Enum:
// FIXME: Why are these compatible?
if (isObjCIdStructType(LHS) && isObjCClassStructType(RHS)) return LHS;
diff --git a/lib/AST/Type.cpp b/lib/AST/Type.cpp
index 06ae9eb4e2..3b06b4ee28 100644
--- a/lib/AST/Type.cpp
+++ b/lib/AST/Type.cpp
@@ -119,7 +119,6 @@ bool Type::isDerivedType() const {
case FunctionNoProto:
case Reference:
case Record:
- case CXXRecord:
return true;
default:
return false;
@@ -709,10 +708,13 @@ bool Type::isScalarType() const {
/// subsumes the notion of C aggregates (C99 6.2.5p21) because it also
/// includes union types.
bool Type::isAggregateType() const {
- if (const CXXRecordType *CXXClassType = dyn_cast<CXXRecordType>(CanonicalType))
- return CXXClassType->getDecl()->isAggregate();
- if (isa<RecordType>(CanonicalType))
+ if (const RecordType *Record = dyn_cast<RecordType>(CanonicalType)) {
+ if (CXXRecordDecl *ClassDecl = dyn_cast<CXXRecordDecl>(Record->getDecl()))
+ return ClassDecl->isAggregate();
+
return true;
+ }
+
if (const ExtQualType *EXTQT = dyn_cast<ExtQualType>(CanonicalType))
return EXTQT->getBaseType()->isAggregateType();
return isa<ArrayType>(CanonicalType);
@@ -743,7 +745,6 @@ bool Type::isIncompleteType() const {
// be completed.
return isVoidType();
case Record:
- case CXXRecord:
case Enum:
// A tagged type (struct/union/enum/class) is incomplete if the decl is a
// forward declaration, but not a full definition (C99 6.2.5p22).
@@ -784,11 +785,12 @@ bool Type::isPODType() const {
return true;
case Record:
+ if (CXXRecordDecl *ClassDecl
+ = dyn_cast<CXXRecordDecl>(cast<RecordType>(CanonicalType)->getDecl()))
+ return ClassDecl->isPOD();
+
// C struct/union is POD.
return true;
-
- case CXXRecord:
- return cast<CXXRecordType>(CanonicalType)->getDecl()->isPOD();
}
}
@@ -915,10 +917,6 @@ bool RecordType::classof(const TagType *TT) {
return isa<RecordDecl>(TT->getDecl());
}
-bool CXXRecordType::classof(const TagType *TT) {
- return isa<CXXRecordDecl>(TT->getDecl());
-}
-
bool EnumType::classof(const TagType *TT) {
return isa<EnumDecl>(TT->getDecl());
}
diff --git a/lib/AST/TypeSerialization.cpp b/lib/AST/TypeSerialization.cpp
index 2d052aa270..b7a8f1a366 100644
--- a/lib/AST/TypeSerialization.cpp
+++ b/lib/AST/TypeSerialization.cpp
@@ -112,7 +112,6 @@ void Type::Create(ASTContext& Context, unsigned i, Deserializer& D) {
break;
case Type::Record:
- case Type::CXXRecord:
case Type::Enum:
// FIXME: Implement this!
assert(false && "Can't deserialize tag types!");