[cfe-commits] r47155 - in /cfe/trunk: AST/Decl.cpp Sema/SemaDecl.cpp include/clang/AST/Attr.h include/clang/AST/Decl.h
Anders Carlsson
andersca at mac.com
Thu Feb 14 23:04:12 PST 2008
Author: andersca
Date: Fri Feb 15 01:04:12 2008
New Revision: 47155
URL: http://llvm.org/viewvc/llvm-project?rev=47155&view=rev
Log:
Get rid of AttributeList in the AST and use the new Attr class instead
Modified:
cfe/trunk/AST/Decl.cpp
cfe/trunk/Sema/SemaDecl.cpp
cfe/trunk/include/clang/AST/Attr.h
cfe/trunk/include/clang/AST/Decl.h
Modified: cfe/trunk/AST/Decl.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/AST/Decl.cpp?rev=47155&r1=47154&r2=47155&view=diff
==============================================================================
--- cfe/trunk/AST/Decl.cpp (original)
+++ cfe/trunk/AST/Decl.cpp Fri Feb 15 01:04:12 2008
@@ -13,6 +13,7 @@
#include "clang/AST/Decl.h"
#include "clang/AST/DeclObjC.h"
+#include "clang/AST/Attr.h"
#include "clang/Basic/IdentifierTable.h"
using namespace clang;
@@ -258,6 +259,11 @@
return "";
}
+void ValueDecl::addAttr(Attr *attr)
+{
+ attr->setNext(Attrs);
+ Attrs = attr;
+}
FunctionDecl::~FunctionDecl() {
delete[] ParamInfo;
Modified: cfe/trunk/Sema/SemaDecl.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/Sema/SemaDecl.cpp?rev=47155&r1=47154&r2=47155&view=diff
==============================================================================
--- cfe/trunk/Sema/SemaDecl.cpp (original)
+++ cfe/trunk/Sema/SemaDecl.cpp Fri Feb 15 01:04:12 2008
@@ -14,6 +14,7 @@
#include "Sema.h"
#include "clang/AST/ASTConsumer.h"
#include "clang/AST/ASTContext.h"
+#include "clang/AST/Attr.h"
#include "clang/AST/Builtins.h"
#include "clang/AST/Decl.h"
#include "clang/AST/Expr.h"
@@ -737,10 +738,8 @@
FunctionDecl *NewFD = new FunctionDecl(D.getIdentifierLoc(), II, R, SC,
D.getDeclSpec().isInlineSpecified(),
- LastDeclarator,
- D.getDeclSpec().getAttributes());
-
- // Transfer ownership of DeclSpec attributes to FunctionDecl
+ LastDeclarator);
+ // FIXME: Handle attributes.
D.getDeclSpec().clearAttributes();
// Merge the decl with the existing one if appropriate. Since C functions
@@ -989,7 +988,9 @@
parmDeclType = Context.getPointerType(parmDeclType);
ParmVarDecl *New = new ParmVarDecl(PI.IdentLoc, II, parmDeclType,
- VarDecl::None, 0, PI.AttrList);
+ VarDecl::None, 0);
+ // FIXME: Handle attributes
+
if (PI.InvalidType)
New->setInvalidDecl();
Modified: cfe/trunk/include/clang/AST/Attr.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/Attr.h?rev=47155&r1=47154&r2=47155&view=diff
==============================================================================
--- cfe/trunk/include/clang/AST/Attr.h (original)
+++ cfe/trunk/include/clang/AST/Attr.h Fri Feb 15 01:04:12 2008
@@ -29,7 +29,7 @@
Kind AttrKind;
protected:
- Attr(Kind AK) : AttrKind(AK) {}
+ Attr(Kind AK) : Next(0), AttrKind(AK) {}
virtual ~Attr() {
delete Next;
}
Modified: cfe/trunk/include/clang/AST/Decl.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/Decl.h?rev=47155&r1=47154&r2=47155&view=diff
==============================================================================
--- cfe/trunk/include/clang/AST/Decl.h (original)
+++ cfe/trunk/include/clang/AST/Decl.h Fri Feb 15 01:04:12 2008
@@ -16,7 +16,6 @@
#include "clang/AST/Type.h"
#include "clang/Basic/SourceLocation.h"
-#include "clang/Parse/AttributeList.h"
#include "llvm/ADT/APSInt.h"
#include "llvm/Bitcode/SerializationFwd.h"
@@ -25,6 +24,7 @@
}
namespace clang {
+class Attr;
class Expr;
class Stmt;
class StringLiteral;
@@ -253,19 +253,20 @@
class ValueDecl : public ScopedDecl {
QualType DeclType;
- /// Attributes - Linked list of attributes that are attached to this
+ /// Attrs - Linked list of attributes that are attached to this
/// function.
- AttributeList *Attributes;
+ Attr *Attrs;
protected:
ValueDecl(Kind DK, SourceLocation L, IdentifierInfo *Id, QualType T,
- ScopedDecl *PrevDecl, AttributeList *A = 0)
- : ScopedDecl(DK, L, Id, PrevDecl), DeclType(T), Attributes(A) {}
+ ScopedDecl *PrevDecl)
+ : ScopedDecl(DK, L, Id, PrevDecl), DeclType(T) {}
public:
QualType getType() const { return DeclType; }
void setType(QualType newType) { DeclType = newType; }
QualType getCanonicalType() const { return DeclType.getCanonicalType(); }
- AttributeList *getAttributes() const { return Attributes; }
+ void addAttr(Attr *attr);
+ const Attr *getAttrs() const { return Attrs; }
// Implement isa/cast/dyncast/etc.
static bool classof(const Decl *D) {
@@ -329,8 +330,8 @@
static bool classof(const VarDecl *D) { return true; }
protected:
VarDecl(Kind DK, SourceLocation L, IdentifierInfo *Id, QualType T,
- StorageClass SC, ScopedDecl *PrevDecl, AttributeList *A = 0)
- : ValueDecl(DK, L, Id, T, PrevDecl, A), Init(0) { SClass = SC; }
+ StorageClass SC, ScopedDecl *PrevDecl)
+ : ValueDecl(DK, L, Id, T, PrevDecl), Init(0) { SClass = SC; }
private:
Expr *Init;
// FIXME: This can be packed into the bitfields in Decl.
@@ -356,8 +357,8 @@
class BlockVarDecl : public VarDecl {
public:
BlockVarDecl(SourceLocation L, IdentifierInfo *Id, QualType T, StorageClass S,
- ScopedDecl *PrevDecl, AttributeList *A = 0)
- : VarDecl(BlockVar, L, Id, T, S, PrevDecl, A) {}
+ ScopedDecl *PrevDecl)
+ : VarDecl(BlockVar, L, Id, T, S, PrevDecl) {}
// Implement isa/cast/dyncast/etc.
static bool classof(const Decl *D) { return D->getKind() == BlockVar; }
@@ -377,8 +378,8 @@
class FileVarDecl : public VarDecl {
public:
FileVarDecl(SourceLocation L, IdentifierInfo *Id, QualType T, StorageClass S,
- ScopedDecl *PrevDecl, AttributeList *A = 0)
- : VarDecl(FileVar, L, Id, T, S, PrevDecl, A) {}
+ ScopedDecl *PrevDecl)
+ : VarDecl(FileVar, L, Id, T, S, PrevDecl) {}
// Implement isa/cast/dyncast/etc.
static bool classof(const Decl *D) { return D->getKind() == FileVar; }
@@ -395,8 +396,8 @@
class ParmVarDecl : public VarDecl {
public:
ParmVarDecl(SourceLocation L, IdentifierInfo *Id, QualType T, StorageClass S,
- ScopedDecl *PrevDecl, AttributeList *A = 0)
- : VarDecl(ParmVar, L, Id, T, S, PrevDecl, A),
+ ScopedDecl *PrevDecl)
+ : VarDecl(ParmVar, L, Id, T, S, PrevDecl),
objcDeclQualifier(OBJC_TQ_None) {}
ObjCDeclQualifier getObjCDeclQualifier() const { return objcDeclQualifier; }
@@ -431,8 +432,8 @@
};
FunctionDecl(SourceLocation L, IdentifierInfo *Id, QualType T,
StorageClass S = None, bool isInline = false,
- ScopedDecl *PrevDecl = 0, AttributeList *Attrs = 0)
- : ValueDecl(Function, L, Id, T, PrevDecl, Attrs),
+ ScopedDecl *PrevDecl = 0)
+ : ValueDecl(Function, L, Id, T, PrevDecl),
ParamInfo(0), Body(0), DeclChain(0), SClass(S), IsInline(isInline) {}
virtual ~FunctionDecl();
More information about the cfe-commits
mailing list