[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