Propagate bitfield info.

llvm-svn: 43613
This commit is contained in:
Devang Patel 2007-11-01 16:29:56 +00:00
parent 50d4205ff9
commit 32714064b1
2 changed files with 10 additions and 5 deletions

View File

@ -1628,7 +1628,7 @@ Sema::DeclTy *Sema::ActOnField(Scope *S, DeclTy *TagDecl,
FieldDecl *NewFD;
if (isa<RecordDecl>(static_cast<Decl *>(TagDecl)))
NewFD = new FieldDecl(Loc, II, T);
NewFD = new FieldDecl(Loc, II, T, BitWidth);
else if (isa<ObjcInterfaceDecl>(static_cast<Decl *>(TagDecl))
|| isa<ObjcImplementationDecl>(static_cast<Decl *>(TagDecl)))
NewFD = new ObjcIvarDecl(Loc, II, T);

View File

@ -417,15 +417,20 @@ private:
/// represent a member of a struct/union/class.
class FieldDecl : public NamedDecl {
QualType DeclType;
Expr *BitWidth;
public:
FieldDecl(SourceLocation L, IdentifierInfo *Id, QualType T)
: NamedDecl(Field, L, Id), DeclType(T) {}
FieldDecl(Kind DK, SourceLocation L, IdentifierInfo *Id, QualType T)
: NamedDecl(DK, L, Id), DeclType(T) {}
FieldDecl(SourceLocation L, IdentifierInfo *Id, QualType T,
Expr *BW = NULL)
: NamedDecl(Field, L, Id), DeclType(T), BitWidth(BW) {}
FieldDecl(Kind DK, SourceLocation L, IdentifierInfo *Id, QualType T,
Expr *BW = NULL)
: NamedDecl(DK, L, Id), DeclType(T), BitWidth(BW) {}
QualType getType() const { return DeclType; }
QualType getCanonicalType() const { return DeclType.getCanonicalType(); }
bool isBitField() const { return BitWidth != NULL; }
Expr *getBitWidth() const { return BitWidth; }
// Implement isa/cast/dyncast/etc.
static bool classof(const Decl *D) {
return D->getKind() >= FieldFirst && D->getKind() <= FieldLast;