diff --git a/clang/include/clang/AST/Type.h b/clang/include/clang/AST/Type.h index f108bd5a45ee..ca55ea670b24 100644 --- a/clang/include/clang/AST/Type.h +++ b/clang/include/clang/AST/Type.h @@ -994,7 +994,7 @@ public: } }; -/// DependentSizedExtVectorType - This type represent an ext vectory type +/// DependentSizedExtVectorType - This type represent an extended vector type /// where either the type or size is dependent. For example: /// @code /// template @@ -1016,7 +1016,7 @@ class DependentSizedExtVectorType : public Type { virtual void Destroy(ASTContext& C); public: - Expr *getSizeExpr() const { return SizeExpr; } + const Expr *getSizeExpr() const { return SizeExpr; } QualType getElementType() const { return ElementType; } SourceLocation getAttributeLoc() const { return loc; } diff --git a/clang/lib/AST/Type.cpp b/clang/lib/AST/Type.cpp index 1db666fdaeb8..7b45b21e5d0c 100644 --- a/clang/lib/AST/Type.cpp +++ b/clang/lib/AST/Type.cpp @@ -1378,7 +1378,7 @@ void DependentSizedArrayType::getAsStringInternal(std::string &S, const Printing void DependentSizedExtVectorType::getAsStringInternal(std::string &S, const PrintingPolicy &Policy) const { getElementType().getAsStringInternal(S, Policy); - S += " __attribute__((ext_vector_ type("; + S += " __attribute__((ext_vector_type("; if (getSizeExpr()) { std::string SStr; llvm::raw_string_ostream s(SStr); diff --git a/clang/lib/Sema/SemaTemplateDeduction.cpp b/clang/lib/Sema/SemaTemplateDeduction.cpp index 935883312e42..784e451804aa 100644 --- a/clang/lib/Sema/SemaTemplateDeduction.cpp +++ b/clang/lib/Sema/SemaTemplateDeduction.cpp @@ -725,12 +725,13 @@ MarkDeducedTemplateParameters(Sema &SemaRef, /// \brief Mark the template arguments that are deduced by the given /// expression. static void -MarkDeducedTemplateParameters(Expr *E, llvm::SmallVectorImpl &Deduced) { - DeclRefExpr *DRE = dyn_cast(E); +MarkDeducedTemplateParameters(const Expr *E, + llvm::SmallVectorImpl &Deduced) { + const DeclRefExpr *DRE = dyn_cast(E); if (!E) return; - NonTypeTemplateParmDecl *NTTP + const NonTypeTemplateParmDecl *NTTP = dyn_cast(DRE->getDecl()); if (!NTTP) return; @@ -751,26 +752,26 @@ MarkDeducedTemplateParameters(Sema &SemaRef, QualType T, switch (T->getTypeClass()) { case Type::ExtQual: MarkDeducedTemplateParameters(SemaRef, - QualType(cast(T.getTypePtr())->getBaseType(), 0), + QualType(cast(T)->getBaseType(), 0), Deduced); break; case Type::Pointer: MarkDeducedTemplateParameters(SemaRef, - cast(T.getTypePtr())->getPointeeType(), + cast(T)->getPointeeType(), Deduced); break; case Type::BlockPointer: MarkDeducedTemplateParameters(SemaRef, - cast(T.getTypePtr())->getPointeeType(), + cast(T)->getPointeeType(), Deduced); break; case Type::LValueReference: case Type::RValueReference: MarkDeducedTemplateParameters(SemaRef, - cast(T.getTypePtr())->getPointeeType(), + cast(T)->getPointeeType(), Deduced); break; @@ -783,35 +784,34 @@ MarkDeducedTemplateParameters(Sema &SemaRef, QualType T, } case Type::DependentSizedArray: - MarkDeducedTemplateParameters( - cast(T.getTypePtr())->getSizeExpr(), + MarkDeducedTemplateParameters(cast(T)->getSizeExpr(), Deduced); // Fall through to check the element type case Type::ConstantArray: case Type::IncompleteArray: MarkDeducedTemplateParameters(SemaRef, - cast(T.getTypePtr())->getElementType(), + cast(T)->getElementType(), Deduced); break; case Type::Vector: case Type::ExtVector: MarkDeducedTemplateParameters(SemaRef, - cast(T.getTypePtr())->getElementType(), + cast(T)->getElementType(), Deduced); break; case Type::DependentSizedExtVector: { const DependentSizedExtVectorType *VecType - = cast(T.getTypePtr()); + = cast(T); MarkDeducedTemplateParameters(SemaRef, VecType->getElementType(), Deduced); MarkDeducedTemplateParameters(VecType->getSizeExpr(), Deduced); break; } case Type::FunctionProto: { - const FunctionProtoType *Proto = cast(T.getTypePtr()); + const FunctionProtoType *Proto = cast(T); MarkDeducedTemplateParameters(SemaRef, Proto->getResultType(), Deduced); for (unsigned I = 0, N = Proto->getNumArgs(); I != N; ++I) MarkDeducedTemplateParameters(SemaRef, Proto->getArgType(I), Deduced); @@ -819,12 +819,12 @@ MarkDeducedTemplateParameters(Sema &SemaRef, QualType T, } case Type::TemplateTypeParm: - Deduced[cast(T.getTypePtr())->getIndex()] = true; + Deduced[cast(T)->getIndex()] = true; break; case Type::TemplateSpecialization: { const TemplateSpecializationType *Spec - = cast(T.getTypePtr()); + = cast(T); if (TemplateDecl *Template = Spec->getTemplateName().getAsTemplateDecl()) if (TemplateTemplateParmDecl *TTP = dyn_cast(Template)) diff --git a/clang/lib/Sema/SemaTemplateInstantiate.cpp b/clang/lib/Sema/SemaTemplateInstantiate.cpp index 72f9511fdd81..3992f8cbe536 100644 --- a/clang/lib/Sema/SemaTemplateInstantiate.cpp +++ b/clang/lib/Sema/SemaTemplateInstantiate.cpp @@ -435,7 +435,7 @@ TemplateTypeInstantiator:: InstantiateDependentSizedExtVectorType(const DependentSizedExtVectorType *T, unsigned Quals) const { - // Instantiate the element type if needed + // Instantiate the element type if needed. QualType ElementType = T->getElementType(); if (ElementType->isDependentType()) { ElementType = Instantiate(ElementType); @@ -443,10 +443,10 @@ InstantiateDependentSizedExtVectorType(const DependentSizedExtVectorType *T, return QualType(); } - // Instantiate the size expression - Expr *SizeExpr = T->getSizeExpr(); + // Instantiate the size expression. + const Expr *SizeExpr = T->getSizeExpr(); Sema::OwningExprResult InstantiatedArraySize = - SemaRef.InstantiateExpr(SizeExpr, TemplateArgs); + SemaRef.InstantiateExpr(const_cast(SizeExpr), TemplateArgs); if (InstantiatedArraySize.isInvalid()) return QualType();