handle type attributes when converting types, not when processing decls.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@52877 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2008-06-29 00:19:33 +00:00
Родитель e5c5ee1cff
Коммит 0bf29ad534
2 изменённых файлов: 6 добавлений и 16 удалений

Просмотреть файл

@ -78,23 +78,8 @@ void Sema::ProcessDeclAttributes(Decl *D, const Declarator &PD) {
ProcessDeclAttributeList(D, Attrs);
// Finally, apply any attributes on the decl itself.
if (const AttributeList *Attrs = PD.getAttributes()) {
if (const AttributeList *Attrs = PD.getAttributes())
ProcessDeclAttributeList(D, Attrs);
// If there are any type attributes that were in the declarator, apply them to
// its top-level type.
// FIXME: we shouldn't allow type attributes here. :(
if (ValueDecl *VD = dyn_cast<ValueDecl>(D)) {
QualType DT = VD->getType();
ProcessTypeAttributes(DT, Attrs);
VD->setType(DT);
} else if (TypedefDecl *TD = dyn_cast<TypedefDecl>(D)) {
QualType DT = TD->getUnderlyingType();
ProcessTypeAttributes(DT, Attrs);
TD->setUnderlyingType(DT);
}
// FIXME: field decl?
}
}
/// ProcessDeclAttributeList - Apply all the decl attributes in the specified

Просмотреть файл

@ -456,6 +456,11 @@ QualType Sema::GetTypeForDeclarator(Declarator &D, Scope *S) {
}
}
// If there were any type attributes applied to the decl itself (not the
// type, apply the type attribute to the type!)
if (const AttributeList *Attrs = D.getAttributes())
ProcessTypeAttributes(T, Attrs);
return T;
}