Some cleanups suggested by Chris

llvm-svn: 73713
This commit is contained in:
Douglas Gregor 2009-06-18 18:45:36 +00:00
parent fa107259fe
commit 1e09bf83c0
4 changed files with 22 additions and 22 deletions

View File

@ -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<typename T, int Size>
@ -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; }

View File

@ -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);

View File

@ -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<bool> &Deduced) {
DeclRefExpr *DRE = dyn_cast<DeclRefExpr>(E);
MarkDeducedTemplateParameters(const Expr *E,
llvm::SmallVectorImpl<bool> &Deduced) {
const DeclRefExpr *DRE = dyn_cast<DeclRefExpr>(E);
if (!E)
return;
NonTypeTemplateParmDecl *NTTP
const NonTypeTemplateParmDecl *NTTP
= dyn_cast<NonTypeTemplateParmDecl>(DRE->getDecl());
if (!NTTP)
return;
@ -751,26 +752,26 @@ MarkDeducedTemplateParameters(Sema &SemaRef, QualType T,
switch (T->getTypeClass()) {
case Type::ExtQual:
MarkDeducedTemplateParameters(SemaRef,
QualType(cast<ExtQualType>(T.getTypePtr())->getBaseType(), 0),
QualType(cast<ExtQualType>(T)->getBaseType(), 0),
Deduced);
break;
case Type::Pointer:
MarkDeducedTemplateParameters(SemaRef,
cast<PointerType>(T.getTypePtr())->getPointeeType(),
cast<PointerType>(T)->getPointeeType(),
Deduced);
break;
case Type::BlockPointer:
MarkDeducedTemplateParameters(SemaRef,
cast<BlockPointerType>(T.getTypePtr())->getPointeeType(),
cast<BlockPointerType>(T)->getPointeeType(),
Deduced);
break;
case Type::LValueReference:
case Type::RValueReference:
MarkDeducedTemplateParameters(SemaRef,
cast<ReferenceType>(T.getTypePtr())->getPointeeType(),
cast<ReferenceType>(T)->getPointeeType(),
Deduced);
break;
@ -783,35 +784,34 @@ MarkDeducedTemplateParameters(Sema &SemaRef, QualType T,
}
case Type::DependentSizedArray:
MarkDeducedTemplateParameters(
cast<DependentSizedArrayType>(T.getTypePtr())->getSizeExpr(),
MarkDeducedTemplateParameters(cast<DependentSizedArrayType>(T)->getSizeExpr(),
Deduced);
// Fall through to check the element type
case Type::ConstantArray:
case Type::IncompleteArray:
MarkDeducedTemplateParameters(SemaRef,
cast<ArrayType>(T.getTypePtr())->getElementType(),
cast<ArrayType>(T)->getElementType(),
Deduced);
break;
case Type::Vector:
case Type::ExtVector:
MarkDeducedTemplateParameters(SemaRef,
cast<VectorType>(T.getTypePtr())->getElementType(),
cast<VectorType>(T)->getElementType(),
Deduced);
break;
case Type::DependentSizedExtVector: {
const DependentSizedExtVectorType *VecType
= cast<DependentSizedExtVectorType>(T.getTypePtr());
= cast<DependentSizedExtVectorType>(T);
MarkDeducedTemplateParameters(SemaRef, VecType->getElementType(), Deduced);
MarkDeducedTemplateParameters(VecType->getSizeExpr(), Deduced);
break;
}
case Type::FunctionProto: {
const FunctionProtoType *Proto = cast<FunctionProtoType>(T.getTypePtr());
const FunctionProtoType *Proto = cast<FunctionProtoType>(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<TemplateTypeParmType>(T.getTypePtr())->getIndex()] = true;
Deduced[cast<TemplateTypeParmType>(T)->getIndex()] = true;
break;
case Type::TemplateSpecialization: {
const TemplateSpecializationType *Spec
= cast<TemplateSpecializationType>(T.getTypePtr());
= cast<TemplateSpecializationType>(T);
if (TemplateDecl *Template = Spec->getTemplateName().getAsTemplateDecl())
if (TemplateTemplateParmDecl *TTP
= dyn_cast<TemplateTemplateParmDecl>(Template))

View File

@ -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<Expr *>(SizeExpr), TemplateArgs);
if (InstantiatedArraySize.isInvalid())
return QualType();