diff options
Diffstat (limited to 'clang/lib')
-rw-r--r-- | clang/lib/AST/ASTContext.cpp | 6 | ||||
-rw-r--r-- | clang/lib/AST/DeclCXX.cpp | 9 | ||||
-rw-r--r-- | clang/lib/CodeGen/CGCXX.cpp | 8 | ||||
-rw-r--r-- | clang/lib/CodeGen/CodeGenTypes.cpp | 7 |
4 files changed, 12 insertions, 18 deletions
diff --git a/clang/lib/AST/ASTContext.cpp b/clang/lib/AST/ASTContext.cpp index 404593452c2..d31f1fb16e1 100644 --- a/clang/lib/AST/ASTContext.cpp +++ b/clang/lib/AST/ASTContext.cpp @@ -2029,9 +2029,11 @@ QualType ASTContext::getDecltypeType(Expr *e) { /// getTagDeclType - Return the unique reference to the type for the /// specified TagDecl (struct/union/class/enum) decl. -QualType ASTContext::getTagDeclType(TagDecl *Decl) { +QualType ASTContext::getTagDeclType(const TagDecl *Decl) { assert (Decl); - return getTypeDeclType(Decl); + // FIXME: What is the design on getTagDeclType when it requires casting + // away const? mutable? + return getTypeDeclType(const_cast<TagDecl*>(Decl)); } /// getSizeType - Return the unique type for "size_t" (C99 7.17), the result diff --git a/clang/lib/AST/DeclCXX.cpp b/clang/lib/AST/DeclCXX.cpp index 52619e99207..e07eae7b20a 100644 --- a/clang/lib/AST/DeclCXX.cpp +++ b/clang/lib/AST/DeclCXX.cpp @@ -379,9 +379,7 @@ QualType CXXMethodDecl::getThisType(ASTContext &C) const { if (ClassTemplateDecl *TD = getParent()->getDescribedClassTemplate()) ClassTy = TD->getInjectedClassNameType(C); else - // FIXME: What is the design on getTagDeclType when it requires casting - // away const? mutable? - ClassTy = C.getTagDeclType(const_cast<CXXRecordDecl*>(getParent())); + ClassTy = C.getTagDeclType(getParent()); ClassTy = ClassTy.getWithAdditionalQualifiers(getTypeQualifiers()); return C.getPointerType(ClassTy); } @@ -466,10 +464,9 @@ CXXConstructorDecl::isCopyConstructor(ASTContext &Context, return false; // Is it a reference to our class type? - QualType PointeeType + QualType PointeeType = Context.getCanonicalType(ParamRefType->getPointeeType()); - QualType ClassTy - = Context.getTagDeclType(const_cast<CXXRecordDecl*>(getParent())); + QualType ClassTy = Context.getTagDeclType(getParent()); if (PointeeType.getUnqualifiedType() != ClassTy) return false; diff --git a/clang/lib/CodeGen/CGCXX.cpp b/clang/lib/CodeGen/CGCXX.cpp index f1a5e1cca4a..00993be161b 100644 --- a/clang/lib/CodeGen/CGCXX.cpp +++ b/clang/lib/CodeGen/CGCXX.cpp @@ -506,9 +506,7 @@ llvm::Constant *CodeGenFunction::GenerateRtti(const CXXRecordDecl *RD) { llvm::SmallString<256> OutName; llvm::raw_svector_ostream Out(OutName); QualType ClassTy; - // FIXME: What is the design on getTagDeclType when it requires casting - // away const? mutable? - ClassTy = getContext().getTagDeclType(const_cast<CXXRecordDecl*>(RD)); + ClassTy = getContext().getTagDeclType(RD); mangleCXXRtti(ClassTy, getContext(), Out); const char *Name = OutName.c_str(); llvm::GlobalVariable::LinkageTypes linktype; @@ -599,9 +597,7 @@ llvm::Value *CodeGenFunction::GenerateVtable(const CXXRecordDecl *RD) { llvm::SmallString<256> OutName; llvm::raw_svector_ostream Out(OutName); QualType ClassTy; - // FIXME: What is the design on getTagDeclType when it requires casting - // away const? mutable? - ClassTy = getContext().getTagDeclType(const_cast<CXXRecordDecl*>(RD)); + ClassTy = getContext().getTagDeclType(RD); mangleCXXVtable(ClassTy, getContext(), Out); const char *Name = OutName.c_str(); llvm::GlobalVariable::LinkageTypes linktype; diff --git a/clang/lib/CodeGen/CodeGenTypes.cpp b/clang/lib/CodeGen/CodeGenTypes.cpp index 0cb0c72f2ec..7b1b85c64ca 100644 --- a/clang/lib/CodeGen/CodeGenTypes.cpp +++ b/clang/lib/CodeGen/CodeGenTypes.cpp @@ -121,8 +121,7 @@ static const TagType *VerifyFuncTypeComplete(const Type* T) { /// UpdateCompletedType - When we find the full definition for a TagDecl, /// replace the 'opaque' type we previously made for it if applicable. void CodeGenTypes::UpdateCompletedType(const TagDecl *TD) { - const Type *Key = - Context.getTagDeclType(const_cast<TagDecl*>(TD)).getTypePtr(); + const Type *Key = Context.getTagDeclType(TD).getTypePtr(); llvm::DenseMap<const Type*, llvm::PATypeHolder>::iterator TDTI = TagDeclTypes.find(Key); if (TDTI == TagDeclTypes.end()) return; @@ -395,7 +394,7 @@ const llvm::Type *CodeGenTypes::ConvertTagDeclType(const TagDecl *TD) { // TagDecl's are not necessarily unique, instead use the (clang) // type connected to the decl. const Type *Key = - Context.getTagDeclType(const_cast<TagDecl*>(TD)).getTypePtr(); + Context.getTagDeclType(TD).getTypePtr(); llvm::DenseMap<const Type*, llvm::PATypeHolder>::iterator TDTI = TagDeclTypes.find(Key); @@ -478,7 +477,7 @@ void CodeGenTypes::addBitFieldInfo(const FieldDecl *FD, unsigned FieldNo, const CGRecordLayout * CodeGenTypes::getCGRecordLayout(const TagDecl *TD) const { const Type *Key = - Context.getTagDeclType(const_cast<TagDecl*>(TD)).getTypePtr(); + Context.getTagDeclType(TD).getTypePtr(); llvm::DenseMap<const Type*, CGRecordLayout *>::iterator I = CGRecordLayouts.find(Key); assert (I != CGRecordLayouts.end() |