[cfe-commits] r106172 - in /cfe/trunk: include/clang/AST/Attr.h include/clang/AST/Makefile include/clang/Basic/Attr.td include/clang/Basic/AttrKinds.h include/clang/Basic/DeclNodes.td include/clang/Basic/Makefile include/clang/Basic/StmtNodes.td lib/AST/AttrImpl.cpp lib/Frontend/PCHReaderDecl.cpp lib/Frontend/PCHWriter.cpp tools/libclang/CXCursor.cpp
Fariborz Jahanian
fjahanian at apple.com
Wed Jun 16 17:11:14 PDT 2010
Hi Sean,
I am getting build failure:
llvm[3]: Building Clang attribute classes with tblgen
tblgen: Unknown command line argument '-gen-clang-attr-classes'. Try:
'/Volumes/sandbox/llvm/Debug/bin/tblgen -help'
make[3]: *** [/Volumes/sandbox/llvm/tools/clang/include/clang/AST/
Debug/Attrs.inc.tmp] Error 1
make[3]: *** Waiting for unfinished jobs....
make[2]: *** [all] Error 1
make[1]: *** [all] Error 1
make: *** [all] Error 1
- Fariborz
On Jun 16, 2010, at 4:43 PM, Sean Hunt wrote:
> Author: coppro
> Date: Wed Jun 16 18:43:53 2010
> New Revision: 106172
>
> URL: http://llvm.org/viewvc/llvm-project?rev=106172&view=rev
> Log:
> Implement first TD-based usage of attributes.
>
> Currently, there are two effective changes:
>
> - Attr::Kind has been changed to attr::Kind, in a separate namespace
> rather than the Attr class. This is because the enumerator needs to
> be visible to parse.
> - The class definitions for the C++0x attributes other than aligned
> are
> generated by TableGen.
>
> The specific classes generated by TableGen are controlled by an
> array in
> TableGen (see the accompanying commit to the LLVM repository). I
> will be
> expanding the amount of code generated as I develop the new
> attributes system
> while initially keeping it confined to these attributes.
>
> Added:
> cfe/trunk/include/clang/Basic/Attr.td
> cfe/trunk/include/clang/Basic/AttrKinds.h
> Modified:
> cfe/trunk/include/clang/AST/Attr.h
> cfe/trunk/include/clang/AST/Makefile
> cfe/trunk/include/clang/Basic/DeclNodes.td
> cfe/trunk/include/clang/Basic/Makefile
> cfe/trunk/include/clang/Basic/StmtNodes.td
> cfe/trunk/lib/AST/AttrImpl.cpp
> cfe/trunk/lib/Frontend/PCHReaderDecl.cpp
> cfe/trunk/lib/Frontend/PCHWriter.cpp
> cfe/trunk/tools/libclang/CXCursor.cpp
>
> Modified: cfe/trunk/include/clang/AST/Attr.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/Attr.h?rev=106172&r1=106171&r2=106172&view=diff
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- cfe/trunk/include/clang/AST/Attr.h (original)
> +++ cfe/trunk/include/clang/AST/Attr.h Wed Jun 16 18:43:53 2010
> @@ -16,6 +16,7 @@
>
> #include "llvm/Support/Casting.h"
> #include "llvm/ADT/StringRef.h"
> +#include "clang/Basic/AttrKinds.h"
> #include <cassert>
> #include <cstring>
> #include <algorithm>
> @@ -41,75 +42,9 @@
>
> /// Attr - This represents one attribute.
> class Attr {
> -public:
> - enum Kind {
> - Alias,
> - Aligned,
> - AlignMac68k,
> - AlwaysInline,
> - AnalyzerNoReturn, // Clang-specific.
> - Annotate,
> - AsmLabel, // Represent GCC asm label extension.
> - BaseCheck,
> - Blocks,
> - CDecl,
> - Cleanup,
> - Const,
> - Constructor,
> - Deprecated,
> - Destructor,
> - FastCall,
> - Final,
> - Format,
> - FormatArg,
> - GNUInline,
> - Hiding,
> - IBOutletKind, // Clang-specific. Use "Kind" suffix to not
> conflict w/ macro.
> - IBOutletCollectionKind, // Clang-specific.
> - IBActionKind, // Clang-specific. Use "Kind" suffix to not
> conflict w/ macro.
> - Malloc,
> - MaxFieldAlignment,
> - NoDebug,
> - NoInline,
> - NonNull,
> - NoReturn,
> - NoThrow,
> - ObjCException,
> - ObjCNSObject,
> - Override,
> - CFReturnsRetained, // Clang/Checker-specific.
> - CFReturnsNotRetained, // Clang/Checker-specific.
> - NSReturnsRetained, // Clang/Checker-specific.
> - NSReturnsNotRetained, // Clang/Checker-specific.
> - Overloadable, // Clang-specific
> - Packed,
> - Pure,
> - Regparm,
> - ReqdWorkGroupSize, // OpenCL-specific
> - Section,
> - Sentinel,
> - StdCall,
> - ThisCall,
> - TransparentUnion,
> - Unavailable,
> - Unused,
> - Used,
> - Visibility,
> - WarnUnusedResult,
> - Weak,
> - WeakImport,
> - WeakRef,
> -
> - FIRST_TARGET_ATTRIBUTE,
> - DLLExport,
> - DLLImport,
> - MSP430Interrupt,
> - X86ForceAlignArgPointer
> - };
> -
> private:
> Attr *Next;
> - Kind AttrKind;
> + attr::Kind AttrKind;
> bool Inherited : 1;
>
> protected:
> @@ -122,7 +57,7 @@
> }
>
> protected:
> - Attr(Kind AK) : Next(0), AttrKind(AK), Inherited(false) {}
> + Attr(attr::Kind AK) : Next(0), AttrKind(AK), Inherited(false) {}
> virtual ~Attr() {
> assert(Next == 0 && "Destroy didn't work");
> }
> @@ -133,7 +68,7 @@
> /// declarations.
> virtual bool isMerged() const { return true; }
>
> - Kind getKind() const { return AttrKind; }
> + attr::Kind getKind() const { return AttrKind; }
>
> Attr *getNext() { return Next; }
> const Attr *getNext() const { return Next; }
> @@ -163,13 +98,15 @@
> // Implement isa/cast/dyncast/etc.
> static bool classof(const Attr *) { return true; }
> };
> +
> +#include "clang/AST/Attrs.inc"
>
> class AttrWithString : public Attr {
> private:
> const char *Str;
> unsigned StrLen;
> protected:
> - AttrWithString(Attr::Kind AK, ASTContext &C, llvm::StringRef s);
> + AttrWithString(attr::Kind AK, ASTContext &C, llvm::StringRef s);
> llvm::StringRef getString() const { return llvm::StringRef(Str,
> StrLen); }
> void ReplaceString(ASTContext &C, llvm::StringRef newS);
> public:
> @@ -179,9 +116,9 @@
> #define
> DEF_SIMPLE_ATTR(ATTR) \
> class ATTR##Attr : public Attr
> { \
> public
> : \
> - ATTR##Attr() : Attr(ATTR)
> {} \
> + ATTR##Attr() : Attr(attr::ATTR)
> {} \
> virtual Attr *clone(ASTContext &C)
> const; \
> - static bool classof(const Attr *A) { return A->getKind() ==
> ATTR; } \
> + static bool classof(const Attr *A) { return A->getKind() ==
> attr::ATTR; } \
> static bool classof(const ATTR##Attr *A) { return
> true; } \
> }
>
> @@ -194,7 +131,7 @@
>
> public:
> MaxFieldAlignmentAttr(unsigned alignment)
> - : Attr(MaxFieldAlignment), Alignment(alignment) {}
> + : Attr(attr::MaxFieldAlignment), Alignment(alignment) {}
>
> /// getAlignment - The specified alignment in bits.
> unsigned getAlignment() const { return Alignment; }
> @@ -203,7 +140,7 @@
>
> // Implement isa/cast/dyncast/etc.
> static bool classof(const Attr *A) {
> - return A->getKind() == MaxFieldAlignment;
> + return A->getKind() == attr::MaxFieldAlignment;
> }
> static bool classof(const MaxFieldAlignmentAttr *A) { return true; }
> };
> @@ -214,7 +151,7 @@
> unsigned Alignment;
> public:
> AlignedAttr(unsigned alignment)
> - : Attr(Aligned), Alignment(alignment) {}
> + : Attr(attr::Aligned), Alignment(alignment) {}
>
> /// getAlignment - The specified alignment in bits.
> unsigned getAlignment() const { return Alignment; }
> @@ -232,7 +169,7 @@
>
> // Implement isa/cast/dyncast/etc.
> static bool classof(const Attr *A) {
> - return A->getKind() == Aligned;
> + return A->getKind() == attr::Aligned;
> }
> static bool classof(const AlignedAttr *A) { return true; }
> };
> @@ -240,7 +177,7 @@
> class AnnotateAttr : public AttrWithString {
> public:
> AnnotateAttr(ASTContext &C, llvm::StringRef ann)
> - : AttrWithString(Annotate, C, ann) {}
> + : AttrWithString(attr::Annotate, C, ann) {}
>
> llvm::StringRef getAnnotation() const { return getString(); }
>
> @@ -248,7 +185,7 @@
>
> // Implement isa/cast/dyncast/etc.
> static bool classof(const Attr *A) {
> - return A->getKind() == Annotate;
> + return A->getKind() == attr::Annotate;
> }
> static bool classof(const AnnotateAttr *A) { return true; }
> };
> @@ -256,7 +193,7 @@
> class AsmLabelAttr : public AttrWithString {
> public:
> AsmLabelAttr(ASTContext &C, llvm::StringRef L)
> - : AttrWithString(AsmLabel, C, L) {}
> + : AttrWithString(attr::AsmLabel, C, L) {}
>
> llvm::StringRef getLabel() const { return getString(); }
>
> @@ -264,7 +201,7 @@
>
> // Implement isa/cast/dyncast/etc.
> static bool classof(const Attr *A) {
> - return A->getKind() == AsmLabel;
> + return A->getKind() == attr::AsmLabel;
> }
> static bool classof(const AsmLabelAttr *A) { return true; }
> };
> @@ -274,54 +211,56 @@
> class AliasAttr : public AttrWithString {
> public:
> AliasAttr(ASTContext &C, llvm::StringRef aliasee)
> - : AttrWithString(Alias, C, aliasee) {}
> + : AttrWithString(attr::Alias, C, aliasee) {}
>
> llvm::StringRef getAliasee() const { return getString(); }
>
> virtual Attr *clone(ASTContext &C) const;
>
> // Implement isa/cast/dyncast/etc.
> - static bool classof(const Attr *A) { return A->getKind() ==
> Alias; }
> + static bool classof(const Attr *A) { return A->getKind() ==
> attr::Alias; }
> static bool classof(const AliasAttr *A) { return true; }
> };
>
> class ConstructorAttr : public Attr {
> int priority;
> public:
> - ConstructorAttr(int p) : Attr(Constructor), priority(p) {}
> + ConstructorAttr(int p) : Attr(attr::Constructor), priority(p) {}
>
> int getPriority() const { return priority; }
>
> virtual Attr *clone(ASTContext &C) const;
>
> // Implement isa/cast/dyncast/etc.
> - static bool classof(const Attr *A) { return A->getKind() ==
> Constructor; }
> + static bool classof(const Attr *A)
> + { return A->getKind() == attr::Constructor; }
> static bool classof(const ConstructorAttr *A) { return true; }
> };
>
> class DestructorAttr : public Attr {
> int priority;
> public:
> - DestructorAttr(int p) : Attr(Destructor), priority(p) {}
> + DestructorAttr(int p) : Attr(attr::Destructor), priority(p) {}
>
> int getPriority() const { return priority; }
>
> virtual Attr *clone(ASTContext &C) const;
>
> // Implement isa/cast/dyncast/etc.
> - static bool classof(const Attr *A) { return A->getKind() ==
> Destructor; }
> + static bool classof(const Attr *A)
> + { return A->getKind() == attr::Destructor; }
> static bool classof(const DestructorAttr *A) { return true; }
> };
>
> class IBOutletAttr : public Attr {
> public:
> - IBOutletAttr() : Attr(IBOutletKind) {}
> + IBOutletAttr() : Attr(attr::IBOutlet) {}
>
> virtual Attr *clone(ASTContext &C) const;
>
> // Implement isa/cast/dyncast/etc.
> static bool classof(const Attr *A) {
> - return A->getKind() == IBOutletKind;
> + return A->getKind() == attr::IBOutlet;
> }
> static bool classof(const IBOutletAttr *A) { return true; }
> };
> @@ -330,7 +269,7 @@
> const ObjCInterfaceDecl *D;
> public:
> IBOutletCollectionAttr(const ObjCInterfaceDecl *d = 0)
> - : Attr(IBOutletCollectionKind), D(d) {}
> + : Attr(attr::IBOutletCollection), D(d) {}
>
> const ObjCInterfaceDecl *getClass() const { return D; }
>
> @@ -338,27 +277,26 @@
>
> // Implement isa/cast/dyncast/etc.
> static bool classof(const Attr *A) {
> - return A->getKind() == IBOutletCollectionKind;
> + return A->getKind() == attr::IBOutletCollection;
> }
> static bool classof(const IBOutletCollectionAttr *A) { return
> true; }
> };
>
> class IBActionAttr : public Attr {
> public:
> - IBActionAttr() : Attr(IBActionKind) {}
> + IBActionAttr() : Attr(attr::IBAction) {}
>
> virtual Attr *clone(ASTContext &C) const;
>
> // Implement isa/cast/dyncast/etc.
> static bool classof(const Attr *A) {
> - return A->getKind() == IBActionKind;
> + return A->getKind() == attr::IBAction;
> }
> static bool classof(const IBActionAttr *A) { return true; }
> };
>
> DEF_SIMPLE_ATTR(AnalyzerNoReturn);
> DEF_SIMPLE_ATTR(Deprecated);
> -DEF_SIMPLE_ATTR(Final);
> DEF_SIMPLE_ATTR(GNUInline);
> DEF_SIMPLE_ATTR(Malloc);
> DEF_SIMPLE_ATTR(NoReturn);
> @@ -366,7 +304,7 @@
> class SectionAttr : public AttrWithString {
> public:
> SectionAttr(ASTContext &C, llvm::StringRef N)
> - : AttrWithString(Section, C, N) {}
> + : AttrWithString(attr::Section, C, N) {}
>
> llvm::StringRef getName() const { return getString(); }
>
> @@ -374,7 +312,7 @@
>
> // Implement isa/cast/dyncast/etc.
> static bool classof(const Attr *A) {
> - return A->getKind() == Section;
> + return A->getKind() == attr::Section;
> }
> static bool classof(const SectionAttr *A) { return true; }
> };
> @@ -408,7 +346,7 @@
>
> virtual Attr *clone(ASTContext &C) const;
>
> - static bool classof(const Attr *A) { return A->getKind() ==
> NonNull; }
> + static bool classof(const Attr *A) { return A->getKind() ==
> attr::NonNull; }
> static bool classof(const NonNullAttr *A) { return true; }
> };
>
> @@ -416,7 +354,7 @@
> int formatIdx, firstArg;
> public:
> FormatAttr(ASTContext &C, llvm::StringRef type, int idx, int first)
> - : AttrWithString(Format, C, type), formatIdx(idx),
> firstArg(first) {}
> + : AttrWithString(attr::Format, C, type), formatIdx(idx),
> firstArg(first) {}
>
> llvm::StringRef getType() const { return getString(); }
> void setType(ASTContext &C, llvm::StringRef type);
> @@ -426,27 +364,27 @@
> virtual Attr *clone(ASTContext &C) const;
>
> // Implement isa/cast/dyncast/etc.
> - static bool classof(const Attr *A) { return A->getKind() ==
> Format; }
> + static bool classof(const Attr *A) { return A->getKind() ==
> attr::Format; }
> static bool classof(const FormatAttr *A) { return true; }
> };
>
> class FormatArgAttr : public Attr {
> int formatIdx;
> public:
> - FormatArgAttr(int idx) : Attr(FormatArg), formatIdx(idx) {}
> + FormatArgAttr(int idx) : Attr(attr::FormatArg), formatIdx(idx) {}
> int getFormatIdx() const { return formatIdx; }
>
> virtual Attr *clone(ASTContext &C) const;
>
> // Implement isa/cast/dyncast/etc.
> - static bool classof(const Attr *A) { return A->getKind() ==
> FormatArg; }
> + static bool classof(const Attr *A) { return A->getKind() ==
> attr::FormatArg; }
> static bool classof(const FormatArgAttr *A) { return true; }
> };
>
> class SentinelAttr : public Attr {
> int sentinel, NullPos;
> public:
> - SentinelAttr(int sentinel_val, int nullPos) : Attr(Sentinel),
> + SentinelAttr(int sentinel_val, int nullPos) : Attr(attr::Sentinel),
> sentinel(sentinel_val), NullPos(nullPos) {}
> int getSentinel() const { return sentinel; }
> int getNullPos() const { return NullPos; }
> @@ -454,7 +392,7 @@
> virtual Attr *clone(ASTContext &C) const;
>
> // Implement isa/cast/dyncast/etc.
> - static bool classof(const Attr *A) { return A->getKind() ==
> Sentinel; }
> + static bool classof(const Attr *A) { return A->getKind() ==
> attr::Sentinel; }
> static bool classof(const SentinelAttr *A) { return true; }
> };
>
> @@ -469,7 +407,7 @@
> private:
> VisibilityTypes VisibilityType;
> public:
> - VisibilityAttr(VisibilityTypes v) : Attr(Visibility),
> + VisibilityAttr(VisibilityTypes v) : Attr(attr::Visibility),
> VisibilityType(v) {}
>
> VisibilityTypes getVisibility() const { return VisibilityType; }
> @@ -477,7 +415,8 @@
> virtual Attr *clone(ASTContext &C) const;
>
> // Implement isa/cast/dyncast/etc.
> - static bool classof(const Attr *A) { return A->getKind() ==
> Visibility; }
> + static bool classof(const Attr *A)
> + { return A->getKind() == attr::Visibility; }
> static bool classof(const VisibilityAttr *A) { return true; }
> };
>
> @@ -491,13 +430,14 @@
>
> class OverloadableAttr : public Attr {
> public:
> - OverloadableAttr() : Attr(Overloadable) { }
> + OverloadableAttr() : Attr(attr::Overloadable) { }
>
> virtual bool isMerged() const { return false; }
>
> virtual Attr *clone(ASTContext &C) const;
>
> - static bool classof(const Attr *A) { return A->getKind() ==
> Overloadable; }
> + static bool classof(const Attr *A)
> + { return A->getKind() == attr::Overloadable; }
> static bool classof(const OverloadableAttr *) { return true; }
> };
>
> @@ -509,14 +449,14 @@
> private:
> BlocksAttrTypes BlocksAttrType;
> public:
> - BlocksAttr(BlocksAttrTypes t) : Attr(Blocks), BlocksAttrType(t) {}
> + BlocksAttr(BlocksAttrTypes t) : Attr(attr::Blocks),
> BlocksAttrType(t) {}
>
> BlocksAttrTypes getType() const { return BlocksAttrType; }
>
> virtual Attr *clone(ASTContext &C) const;
>
> // Implement isa/cast/dyncast/etc.
> - static bool classof(const Attr *A) { return A->getKind() ==
> Blocks; }
> + static bool classof(const Attr *A) { return A->getKind() ==
> attr::Blocks; }
> static bool classof(const BlocksAttr *A) { return true; }
> };
>
> @@ -526,14 +466,14 @@
> FunctionDecl *FD;
>
> public:
> - CleanupAttr(FunctionDecl *fd) : Attr(Cleanup), FD(fd) {}
> + CleanupAttr(FunctionDecl *fd) : Attr(attr::Cleanup), FD(fd) {}
>
> const FunctionDecl *getFunctionDecl() const { return FD; }
>
> virtual Attr *clone(ASTContext &C) const;
>
> // Implement isa/cast/dyncast/etc.
> - static bool classof(const Attr *A) { return A->getKind() ==
> Cleanup; }
> + static bool classof(const Attr *A) { return A->getKind() ==
> attr::Cleanup; }
> static bool classof(const CleanupAttr *A) { return true; }
> };
>
> @@ -545,14 +485,14 @@
> unsigned NumParams;
>
> public:
> - RegparmAttr(unsigned np) : Attr(Regparm), NumParams(np) {}
> + RegparmAttr(unsigned np) : Attr(attr::Regparm), NumParams(np) {}
>
> unsigned getNumParams() const { return NumParams; }
>
> virtual Attr *clone(ASTContext &C) const;
>
> // Implement isa/cast/dyncast/etc.
> - static bool classof(const Attr *A) { return A->getKind() ==
> Regparm; }
> + static bool classof(const Attr *A) { return A->getKind() ==
> attr::Regparm; }
> static bool classof(const RegparmAttr *A) { return true; }
> };
>
> @@ -560,7 +500,7 @@
> unsigned X, Y, Z;
> public:
> ReqdWorkGroupSizeAttr(unsigned X, unsigned Y, unsigned Z)
> - : Attr(ReqdWorkGroupSize), X(X), Y(Y), Z(Z) {}
> + : Attr(attr::ReqdWorkGroupSize), X(X), Y(Y), Z(Z) {}
>
> unsigned getXDim() const { return X; }
> unsigned getYDim() const { return Y; }
> @@ -570,7 +510,7 @@
>
> // Implement isa/cast/dyncast/etc.
> static bool classof(const Attr *A) {
> - return A->getKind() == ReqdWorkGroupSize;
> + return A->getKind() == attr::ReqdWorkGroupSize;
> }
> static bool classof(const ReqdWorkGroupSizeAttr *A) { return true; }
> };
> @@ -581,11 +521,6 @@
> DEF_SIMPLE_ATTR(NSReturnsNotRetained);
> DEF_SIMPLE_ATTR(NSReturnsRetained);
>
> -// C++0x member checking attributes.
> -DEF_SIMPLE_ATTR(BaseCheck);
> -DEF_SIMPLE_ATTR(Hiding);
> -DEF_SIMPLE_ATTR(Override);
> -
> // Target-specific attributes
> DEF_SIMPLE_ATTR(DLLImport);
> DEF_SIMPLE_ATTR(DLLExport);
> @@ -594,14 +529,15 @@
> unsigned Number;
>
> public:
> - MSP430InterruptAttr(unsigned n) : Attr(MSP430Interrupt),
> Number(n) {}
> + MSP430InterruptAttr(unsigned n) : Attr(attr::MSP430Interrupt),
> Number(n) {}
>
> unsigned getNumber() const { return Number; }
>
> virtual Attr *clone(ASTContext &C) const;
>
> // Implement isa/cast/dyncast/etc.
> - static bool classof(const Attr *A) { return A->getKind() ==
> MSP430Interrupt; }
> + static bool classof(const Attr *A)
> + { return A->getKind() == attr::MSP430Interrupt; }
> static bool classof(const MSP430InterruptAttr *A) { return true; }
> };
>
>
> Modified: cfe/trunk/include/clang/AST/Makefile
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/Makefile?rev=106172&r1=106171&r2=106172&view=diff
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- cfe/trunk/include/clang/AST/Makefile (original)
> +++ cfe/trunk/include/clang/AST/Makefile Wed Jun 16 18:43:53 2010
> @@ -1,17 +1,23 @@
> CLANG_LEVEL := ../../..
> -BUILT_SOURCES = StmtNodes.inc DeclNodes.inc
> TD_SRC_DIR = $(PROJ_SRC_DIR)/../Basic
> +BUILT_SOURCES = Attrs.inc StmtNodes.inc DeclNodes.inc
>
> TABLEGEN_INC_FILES_COMMON = 1
>
> include $(CLANG_LEVEL)/Makefile
>
> -INPUT_TDS = $(TD_SRC_DIR)/StmtNodes.td $(TD_SRC_DIR)/DeclNodes.td
> +$(ObjDir)/Attrs.inc.tmp : $(TD_SRC_DIR)/Attr.td $(TBLGEN) \
> + $(ObjDir)/.dir
> + $(Echo) "Building Clang attribute classes with tblgen"
> + $(Verb) $(TableGen) -gen-clang-attr-classes -o $(call SYSPATH, $@) \
> + -I $(PROJ_SRC_DIR)/../../ $<
>
> -$(ObjDir)/StmtNodes.inc.tmp : $(TD_SRC_DIR)/StmtNodes.td $(TBLGEN) $
> (ObjDir)/.dir
> +$(ObjDir)/StmtNodes.inc.tmp : $(TD_SRC_DIR)/StmtNodes.td $(TBLGEN) \
> + $(ObjDir)/.dir
> $(Echo) "Building Clang statement node tables with tblgen"
> $(Verb) $(TableGen) -gen-clang-stmt-nodes -o $(call SYSPATH, $@) $<
>
> -$(ObjDir)/DeclNodes.inc.tmp : $(TD_SRC_DIR)/DeclNodes.td $(TBLGEN) $
> (ObjDir)/.dir
> +$(ObjDir)/DeclNodes.inc.tmp : $(TD_SRC_DIR)/DeclNodes.td $(TBLGEN) \
> + $(ObjDir)/.dir
> $(Echo) "Building Clang declaration node tables with tblgen"
> $(Verb) $(TableGen) -gen-clang-decl-nodes -o $(call SYSPATH, $@) $<
>
> Added: cfe/trunk/include/clang/Basic/Attr.td
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/Attr.td?rev=106172&view=auto
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- cfe/trunk/include/clang/Basic/Attr.td (added)
> +++ cfe/trunk/include/clang/Basic/Attr.td Wed Jun 16 18:43:53 2010
> @@ -0,0 +1,357 @@
> +
> ////////////////////////////////////////////////////////////////////////////////
> +// Note: This file is a work in progress. Please update it only if
> you believe
> +// there is an obvious error; otherwise please check with Sean
> Hunt. He can
> +// be reached at rideau3 at gmail.com.
> +
> ////////////////////////////////////////////////////////////////////////////////
> +
> +class AttrSubject;
> +
> +include "clang/Basic/DeclNodes.td"
> +include "clang/Basic/StmtNodes.td"
> +
> +// A subset-subject is an AttrSubject constrained to operate only
> on some subset
> +// of that subject.
> +//
> +// The description is used in output messages to specify what the
> subject
> +// represents. FIXME: Deal with translation issues.
> +//
> +// The code fragment is a boolean expression that will confirm that
> the subject
> +// meets the requirements; the subject will have the name S, and
> will have the
> +// type specified by the base. It should be a simple boolean
> expression.
> +
> +class SubsetSubject<AttrSubject base, string description, code check>
> + : AttrSubject {
> + AttrSubject Base = base;
> + string Description = description;
> + code CheckCode = check;
> +}
> +
> +def NormalVar : SubsetSubject<Var, "non-register, non-parameter
> variable",
> + [{S->getStorageClass() !=
> VarDecl::Register &&
> + S->getKind() != Decl::ImplicitParam
> + S->getKind() != Decl::ParmVar
> + S->getKind() !=
> Decl::NonTypeTemplateParm}]>;
> +def CXXVirtualMethod : SubsetSubject<CXXRecord, "virtual member
> function",
> + [{S->isVirtual()}]>;
> +def NonBitField : SubsetSubject<Field, "non-bit field",
> + [{!S->isBitField()}]>;
> +
> +class Argument<string name> {
> + string Name = name;
> +}
> +
> +class IdentifierArgument<string name> : Argument<name>;
> +class IntArgument<string name> : Argument<name>;
> +class StringArgument<string name> : Argument<name>;
> +class ExprArgument<string name> : Argument<name>;
> +class FunctionArgument<string name> : Argument<name>;
> +class ObjCInterfaceArgument<string name> : Argument<name>;
> +class UnsignedIntArgument<string name> : Argument<name>;
> +class UnsignedIntOrTypeArgument<string name> : Argument<name>;
> +
> +class DefaultIntArgument<string name, int default> :
> IntArgument<name> {
> + int Default = default;
> +}
> +
> +class VariadicArgument<Argument arg> : Argument<arg.Name> {
> + Argument VariadicArg = arg;
> +}
> +
> +class Attr {
> + list<string> Spellings;
> + list<AttrSubject> Subjects;
> + list<Argument> Args = [];
> + list<string> Namespaces = [];
> + list<string> Aliases = [];
> + bit DoNotEmit = 1;
> +}
> +
> +//
> +// Attributes begin here
> +//
> +
> +def Alias : Attr {
> + let Spellings = ["alias"];
> + let Args = [StringArgument<"AliasName">];
> +}
> +
> +def Aligned : Attr {
> + let Spellings = ["align", "aligned"];
> + let Subjects = [NonBitField, NormalVar, Tag];
> + let Args = [UnsignedIntOrTypeArgument<"Alignment">];
> + let Namespaces = ["", "std"];
> +}
> +
> +def AlignMac68k : Attr {
> + let Spellings = [];
> +}
> +
> +def AlwaysInline : Attr {
> + let Spellings = ["always_inline"];
> +}
> +
> +def AnalyzerNoReturn : Attr {
> + let Spellings = ["analyzer_noreturn"];
> +}
> +
> +def Annotate : Attr {
> + let Spellings = ["annotate"];
> + let Args = [StringArgument<"Annotation">];
> +}
> +
> +def AsmLabel : Attr {
> + let Spellings = [];
> + let Args = [StringArgument<"Label">];
> +}
> +
> +def BaseCheck : Attr {
> + let Spellings = ["base_check"];
> + let Subjects = [CXXRecord];
> + let Namespaces = ["", "std"];
> + let DoNotEmit = 0;
> +}
> +
> +def Blocks : Attr {
> + let Spellings = ["blocks"];
> + let Args = [IdentifierArgument<"Type">];
> +}
> +
> +def CarriesDependency : Attr {
> + let Spellings = ["carries_dependency"];
> + let Subjects = [ParmVar, Function];
> + let Namespaces = ["", "std"];
> + let DoNotEmit = 0;
> +}
> +
> +def CDecl : Attr {
> + let Spellings = ["cdecl", "__cdecl"];
> +}
> +
> +def CFReturnsRetained : Attr {
> + let Spellings = ["cf_returns_retained"];
> +}
> +
> +def CFReturnsNotRetained : Attr {
> + let Spellings = ["cf_returns_not_retained"];
> +}
> +
> +def Cleanup : Attr {
> + let Spellings = ["cleanup"];
> + let Args = [FunctionArgument<"FunctionDecl">];
> +}
> +
> +def Const : Attr {
> + let Spellings = ["const"];
> +}
> +
> +def Constructor : Attr {
> + let Spellings = ["constructor"];
> + let Args = [IntArgument<"Priority">];
> +}
> +
> +def Deprecated : Attr {
> + let Spellings = ["deprecated"];
> +}
> +
> +def Destructor : Attr {
> + let Spellings = ["destructor"];
> + let Args = [IntArgument<"Priority">];
> +}
> +
> +def DLLExport : Attr {
> + let Spellings = ["dllexport"];
> +}
> +
> +def DLLImport : Attr {
> + let Spellings = ["dllimport"];
> +}
> +
> +def FastCall : Attr {
> + let Spellings = ["fastcall", "__fastcall"];
> +}
> +
> +def Final : Attr {
> + let Spellings = ["final"];
> + let Subjects = [CXXRecord, CXXVirtualMethod];
> + let Namespaces = ["", "std"];
> + let DoNotEmit = 0;
> +}
> +
> +def Format : Attr {
> + let Spellings = ["format"];
> + let Args = [StringArgument<"Type">, IntArgument<"FormatIdx">,
> + IntArgument<"FirstArg">];
> +}
> +
> +def FormatArg : Attr {
> + let Spellings = ["format_arg"];
> + let Args = [IntArgument<"FormatIdx">];
> +}
> +
> +def GNUInline : Attr {
> + let Spellings = ["gnu_inline"];
> +}
> +
> +def Hiding : Attr {
> + let Spellings = ["hiding"];
> + let Subjects = [Field, CXXMethod];
> + let Namespaces = ["", "std"];
> + let DoNotEmit = 0;
> +}
> +
> +def IBAction : Attr {
> + let Spellings = ["ibaction"];
> +}
> +
> +def IBOutlet : Attr {
> + let Spellings = ["iboutlet"];
> +}
> +
> +def IBOutletCollection : Attr {
> + let Spellings = ["iboutletcollection"];
> + let Args = [ObjCInterfaceArgument<"Class">];
> +}
> +
> +def Malloc : Attr {
> + let Spellings = ["malloc"];
> +}
> +
> +def MaxFieldAlignment : Attr {
> + let Spellings = [];
> + let Args = [UnsignedIntArgument<"Alignment">];
> +}
> +
> +def MSP430Interrupt : Attr {
> + let Spellings = [];
> + let Args = [UnsignedIntArgument<"Number">];
> +}
> +
> +def NoDebug : Attr {
> + let Spellings = ["nodebug"];
> +}
> +
> +def NoInline : Attr {
> + let Spellings = ["noinline"];
> +}
> +
> +def NonNull : Attr {
> + let Spellings = ["nonnull"];
> + let Args = [VariadicArgument<UnsignedIntArgument<"Args">>];
> +}
> +
> +def NoReturn : Attr {
> + let Spellings = ["noreturn"];
> + // FIXME: Does GCC allow this on the function instead?
> + let Subjects = [Function];
> + let Namespaces = ["", "std"];
> +}
> +
> +def NoThrow : Attr {
> + let Spellings = ["nothrow"];
> +}
> +
> +def NSReturnsRetained : Attr {
> + let Spellings = ["ns_returns_retained"];
> +}
> +
> +def NSReturnsNotRetained : Attr {
> + let Spellings = ["ns_returns_not_retained"];
> +}
> +
> +def ObjCException : Attr {
> + let Spellings = ["objc_exception"];
> +}
> +
> +def ObjCNSObject : Attr {
> + let Spellings = ["NSOjbect"];
> +}
> +
> +def Override : Attr {
> + let Spellings = ["override"];
> + let Subjects = [CXXVirtualMethod];
> + let Namespaces = ["", "std"];
> + let DoNotEmit = 0;
> +}
> +
> +def Overloadable : Attr {
> + let Spellings = ["overloadable"];
> +}
> +
> +def Packed : Attr {
> + let Spellings = ["packed"];
> +}
> +
> +def Pure : Attr {
> + let Spellings = ["pure"];
> +}
> +
> +def Regparm : Attr {
> + let Spellings = ["regparm"];
> + let Args = [UnsignedIntArgument<"NumParams">];
> +}
> +
> +def ReqdWorkGroupSize : Attr {
> + let Spellings = ["reqd_work_group_size"];
> + let Args = [UnsignedIntArgument<"XDim">,
> UnsignedIntArgument<"YDim">,
> + UnsignedIntArgument<"ZDim">];
> +}
> +
> +def Section : Attr {
> + let Spellings = ["section"];
> + let Args = [StringArgument<"Name">];
> +}
> +
> +def Sentinel : Attr {
> + let Spellings = ["sentinel"];
> + let Args = [DefaultIntArgument<"NulPos", 0>,
> + DefaultIntArgument<"Sentinel", 0>];
> +}
> +
> +def StdCall : Attr {
> + let Spellings = ["stdcall", "__stdcall"];
> +}
> +
> +def ThisCall : Attr {
> + let Spellings = ["thiscall", "__thiscall"];
> +}
> +
> +def TransparentUnion : Attr {
> + let Spellings = ["transparent_union"];
> +}
> +
> +def Unavailable : Attr {
> + let Spellings = ["unavailable"];
> +}
> +
> +def Unused : Attr {
> + let Spellings = ["unused"];
> +}
> +
> +def Used : Attr {
> + let Spellings = ["used"];
> +}
> +
> +def Visibility : Attr {
> + let Spellings = ["visibility"];
> + let Args = [StringArgument<"Visibility">];
> +}
> +
> +def WarnUnusedResult : Attr {
> + let Spellings = ["warn_unused_result"];
> +}
> +
> +def Weak : Attr {
> + let Spellings = ["weak"];
> +}
> +
> +def WeakImport : Attr {
> + let Spellings = ["weak_import"];
> +}
> +
> +def WeakRef : Attr {
> + let Spellings = ["weakref"];
> +}
> +
> +def X86ForceAlignArgPointer : Attr {
> + let Spellings = [];
> +}
>
> Added: cfe/trunk/include/clang/Basic/AttrKinds.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/AttrKinds.h?rev=106172&view=auto
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- cfe/trunk/include/clang/Basic/AttrKinds.h (added)
> +++ cfe/trunk/include/clang/Basic/AttrKinds.h Wed Jun 16 18:43:53 2010
> @@ -0,0 +1,31 @@
> +//===----- Attr.h - Enum values for C Attribute Kinds ----------*- C
> ++ -*-===//
> +//
> +// The LLVM Compiler Infrastructure
> +//
> +// This file is distributed under the University of Illinois Open
> Source
> +// License. See LICENSE.TXT for details.
> +//
> +//
> =
> =
> =
> ----------------------------------------------------------------------=
> ==//
> +//
> +// This file defines the attr::Kind enum
> +//
> +//
> =
> =
> =
> ----------------------------------------------------------------------=
> ==//
> +
> +#ifndef LLVM_CLANG_ATTRKINDS_H
> +#define LLVM_CLANG_ATTRKINDS_H
> +
> +namespace clang {
> +
> +namespace attr {
> +
> +// Kind - This is a list of all the recognized kinds of attributes.
> +enum Kind {
> +#define ATTR(X) X,
> +#include "clang/Basic/AttrList.inc"
> + NUM_ATTRS
> +};
> +
> +} // end namespace attr
> +} // end namespace clang
> +
> +#endif
>
> Modified: cfe/trunk/include/clang/Basic/DeclNodes.td
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/DeclNodes.td?rev=106172&r1=106171&r2=106172&view=diff
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- cfe/trunk/include/clang/Basic/DeclNodes.td (original)
> +++ cfe/trunk/include/clang/Basic/DeclNodes.td Wed Jun 16 18:43:53
> 2010
> @@ -1,4 +1,6 @@
> -class Decl<bit abstract = 0> {
> +class AttrSubject;
> +
> +class Decl<bit abstract = 0> : AttrSubject {
> bit Abstract = abstract;
> }
>
>
> Modified: cfe/trunk/include/clang/Basic/Makefile
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/Makefile?rev=106172&r1=106171&r2=106172&view=diff
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- cfe/trunk/include/clang/Basic/Makefile (original)
> +++ cfe/trunk/include/clang/Basic/Makefile Wed Jun 16 18:43:53 2010
> @@ -3,7 +3,7 @@
> DiagnosticCommonKinds.inc DiagnosticDriverKinds.inc \
> DiagnosticFrontendKinds.inc DiagnosticLexKinds.inc \
> DiagnosticParseKinds.inc DiagnosticSemaKinds.inc \
> - DiagnosticGroups.inc
> + DiagnosticGroups.inc AttrList.inc
>
> TABLEGEN_INC_FILES_COMMON = 1
>
> @@ -19,4 +19,7 @@
> $(Echo) "Building Clang diagnostic groups with tblgen"
> $(Verb) $(TableGen) -gen-clang-diag-groups -o $(call SYSPATH, $@) $<
>
> -
> +$(ObjDir)/AttrList.inc.tmp : Attr.td $(TBLGEN) $(ObjDir)/.dir
> + $(Echo) "Building Clang attribute list with tblgen"
> + $(Verb) $(TableGen) -gen-clang-attr-list -o $(call SYSPATH, $@) \
> + -I $(PROJ_SRC_DIR)/../.. $<
>
> Modified: cfe/trunk/include/clang/Basic/StmtNodes.td
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/StmtNodes.td?rev=106172&r1=106171&r2=106172&view=diff
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- cfe/trunk/include/clang/Basic/StmtNodes.td (original)
> +++ cfe/trunk/include/clang/Basic/StmtNodes.td Wed Jun 16 18:43:53
> 2010
> @@ -1,4 +1,6 @@
> -class Stmt<bit abstract = 0> {
> +class AttrSubject;
> +
> +class Stmt<bit abstract = 0> : AttrSubject {
> bit Abstract = abstract;
> }
>
>
> Modified: cfe/trunk/lib/AST/AttrImpl.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/AST/AttrImpl.cpp?rev=106172&r1=106171&r2=106172&view=diff
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- cfe/trunk/lib/AST/AttrImpl.cpp (original)
> +++ cfe/trunk/lib/AST/AttrImpl.cpp Wed Jun 16 18:43:53 2010
> @@ -24,7 +24,7 @@
> C.Deallocate((void*)this);
> }
>
> -AttrWithString::AttrWithString(Attr::Kind AK, ASTContext &C,
> llvm::StringRef s)
> +AttrWithString::AttrWithString(attr::Kind AK, ASTContext &C,
> llvm::StringRef s)
> : Attr(AK) {
> assert(!s.empty());
> StrLen = s.size();
> @@ -51,7 +51,7 @@
> }
>
> NonNullAttr::NonNullAttr(ASTContext &C, unsigned* arg_nums, unsigned
> size)
> - : Attr(NonNull), ArgNums(0), Size(0) {
> + : Attr(attr::NonNull), ArgNums(0), Size(0) {
> if (size == 0)
> return;
> assert(arg_nums);
>
> Modified: cfe/trunk/lib/Frontend/PCHReaderDecl.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/PCHReaderDecl.cpp?rev=106172&r1=106171&r2=106172&view=diff
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- cfe/trunk/lib/Frontend/PCHReaderDecl.cpp (original)
> +++ cfe/trunk/lib/Frontend/PCHReaderDecl.cpp Wed Jun 16 18:43:53 2010
> @@ -679,24 +679,24 @@
> (void)RecCode;
>
> #define SIMPLE_ATTR(Name) \
> - case Attr::Name: \
> + case attr::Name: \
> New = ::new (*Context) Name##Attr(); \
> break
>
> #define STRING_ATTR(Name) \
> - case Attr::Name: \
> + case attr::Name: \
> New = ::new (*Context) Name##Attr(*Context, ReadString(Record,
> Idx)); \
> break
>
> #define UNSIGNED_ATTR(Name) \
> - case Attr::Name: \
> + case attr::Name: \
> New = ::new (*Context) Name##Attr(Record[Idx++]); \
> break
>
> Attr *Attrs = 0;
> while (Idx < Record.size()) {
> Attr *New = 0;
> - Attr::Kind Kind = (Attr::Kind)Record[Idx++];
> + attr::Kind Kind = (attr::Kind)Record[Idx++];
> bool IsInherited = Record[Idx++];
>
> switch (Kind) {
> @@ -712,14 +712,14 @@
> STRING_ATTR(AsmLabel);
> SIMPLE_ATTR(BaseCheck);
>
> - case Attr::Blocks:
> + case attr::Blocks:
> New = ::new (*Context) BlocksAttr(
>
> (BlocksAttr::BlocksAttrTypes)Record[Idx++]);
> break;
>
> SIMPLE_ATTR(CDecl);
>
> - case Attr::Cleanup:
> + case attr::Cleanup:
> New = ::new (*Context) CleanupAttr(
>
> cast<FunctionDecl>(GetDecl(Record[Idx++])));
> break;
> @@ -733,7 +733,7 @@
> SIMPLE_ATTR(FastCall);
> SIMPLE_ATTR(Final);
>
> - case Attr::Format: {
> + case attr::Format: {
> std::string Type = ReadString(Record, Idx);
> unsigned FormatIdx = Record[Idx++];
> unsigned FirstArg = Record[Idx++];
> @@ -741,13 +741,13 @@
> break;
> }
>
> - case Attr::FormatArg: {
> + case attr::FormatArg: {
> unsigned FormatIdx = Record[Idx++];
> New = ::new (*Context) FormatArgAttr(FormatIdx);
> break;
> }
>
> - case Attr::Sentinel: {
> + case attr::Sentinel: {
> int sentinel = Record[Idx++];
> int nullPos = Record[Idx++];
> New = ::new (*Context) SentinelAttr(sentinel, nullPos);
> @@ -757,15 +757,15 @@
> SIMPLE_ATTR(GNUInline);
> SIMPLE_ATTR(Hiding);
>
> - case Attr::IBActionKind:
> + case attr::IBAction:
> New = ::new (*Context) IBActionAttr();
> break;
>
> - case Attr::IBOutletKind:
> + case attr::IBOutlet:
> New = ::new (*Context) IBOutletAttr();
> break;
>
> - case Attr::IBOutletCollectionKind: {
> + case attr::IBOutletCollection: {
> ObjCInterfaceDecl *D =
> cast_or_null<ObjCInterfaceDecl>(GetDecl(Record[Idx++]));
> New = ::new (*Context) IBOutletCollectionAttr(D);
> @@ -778,7 +778,7 @@
> SIMPLE_ATTR(NoReturn);
> SIMPLE_ATTR(NoThrow);
>
> - case Attr::NonNull: {
> + case attr::NonNull: {
> unsigned Size = Record[Idx++];
> llvm::SmallVector<unsigned, 16> ArgNums;
> ArgNums.insert(ArgNums.end(), &Record[Idx], &Record[Idx] +
> Size);
> @@ -787,7 +787,7 @@
> break;
> }
>
> - case Attr::ReqdWorkGroupSize: {
> + case attr::ReqdWorkGroupSize: {
> unsigned X = Record[Idx++];
> unsigned Y = Record[Idx++];
> unsigned Z = Record[Idx++];
> @@ -815,7 +815,7 @@
> SIMPLE_ATTR(Unused);
> SIMPLE_ATTR(Used);
>
> - case Attr::Visibility:
> + case attr::Visibility:
> New = ::new (*Context) VisibilityAttr(
>
> (VisibilityAttr::VisibilityTypes)Record[Idx++]);
> break;
>
> Modified: cfe/trunk/lib/Frontend/PCHWriter.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/PCHWriter.cpp?rev=106172&r1=106171&r2=106172&view=diff
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- cfe/trunk/lib/Frontend/PCHWriter.cpp (original)
> +++ cfe/trunk/lib/Frontend/PCHWriter.cpp Wed Jun 16 18:43:53 2010
> @@ -1842,66 +1842,66 @@
> default:
> assert(0 && "Does not support PCH writing for this attribute
> yet!");
> break;
> - case Attr::Alias:
> + case attr::Alias:
> AddString(cast<AliasAttr>(Attr)->getAliasee(), Record);
> break;
>
> - case Attr::AlignMac68k:
> + case attr::AlignMac68k:
> break;
>
> - case Attr::Aligned:
> + case attr::Aligned:
> Record.push_back(cast<AlignedAttr>(Attr)->getAlignment());
> break;
>
> - case Attr::AlwaysInline:
> + case attr::AlwaysInline:
> break;
>
> - case Attr::AnalyzerNoReturn:
> + case attr::AnalyzerNoReturn:
> break;
>
> - case Attr::Annotate:
> + case attr::Annotate:
> AddString(cast<AnnotateAttr>(Attr)->getAnnotation(), Record);
> break;
>
> - case Attr::AsmLabel:
> + case attr::AsmLabel:
> AddString(cast<AsmLabelAttr>(Attr)->getLabel(), Record);
> break;
>
> - case Attr::BaseCheck:
> + case attr::BaseCheck:
> break;
>
> - case Attr::Blocks:
> + case attr::Blocks:
> Record.push_back(cast<BlocksAttr>(Attr)->getType()); // FIXME:
> stable
> break;
>
> - case Attr::CDecl:
> + case attr::CDecl:
> break;
>
> - case Attr::Cleanup:
> + case attr::Cleanup:
> AddDeclRef(cast<CleanupAttr>(Attr)->getFunctionDecl(), Record);
> break;
>
> - case Attr::Const:
> + case attr::Const:
> break;
>
> - case Attr::Constructor:
> + case attr::Constructor:
> Record.push_back(cast<ConstructorAttr>(Attr)->getPriority());
> break;
>
> - case Attr::DLLExport:
> - case Attr::DLLImport:
> - case Attr::Deprecated:
> + case attr::DLLExport:
> + case attr::DLLImport:
> + case attr::Deprecated:
> break;
>
> - case Attr::Destructor:
> + case attr::Destructor:
> Record.push_back(cast<DestructorAttr>(Attr)->getPriority());
> break;
>
> - case Attr::FastCall:
> - case Attr::Final:
> + case attr::FastCall:
> + case attr::Final:
> break;
>
> - case Attr::Format: {
> + case attr::Format: {
> const FormatAttr *Format = cast<FormatAttr>(Attr);
> AddString(Format->getType(), Record);
> Record.push_back(Format->getFormatIdx());
> @@ -1909,93 +1909,93 @@
> break;
> }
>
> - case Attr::FormatArg: {
> + case attr::FormatArg: {
> const FormatArgAttr *Format = cast<FormatArgAttr>(Attr);
> Record.push_back(Format->getFormatIdx());
> break;
> }
>
> - case Attr::Sentinel : {
> + case attr::Sentinel : {
> const SentinelAttr *Sentinel = cast<SentinelAttr>(Attr);
> Record.push_back(Sentinel->getSentinel());
> Record.push_back(Sentinel->getNullPos());
> break;
> }
>
> - case Attr::GNUInline:
> - case Attr::Hiding:
> - case Attr::IBActionKind:
> - case Attr::IBOutletKind:
> - case Attr::Malloc:
> - case Attr::NoDebug:
> - case Attr::NoInline:
> - case Attr::NoReturn:
> - case Attr::NoThrow:
> + case attr::GNUInline:
> + case attr::Hiding:
> + case attr::IBAction:
> + case attr::IBOutlet:
> + case attr::Malloc:
> + case attr::NoDebug:
> + case attr::NoInline:
> + case attr::NoReturn:
> + case attr::NoThrow:
> break;
>
> - case Attr::IBOutletCollectionKind: {
> + case attr::IBOutletCollection: {
> const IBOutletCollectionAttr *ICA =
> cast<IBOutletCollectionAttr>(Attr);
> AddDeclRef(ICA->getClass(), Record);
> break;
> }
>
> - case Attr::NonNull: {
> + case attr::NonNull: {
> const NonNullAttr *NonNull = cast<NonNullAttr>(Attr);
> Record.push_back(NonNull->size());
> Record.insert(Record.end(), NonNull->begin(), NonNull->end());
> break;
> }
>
> - case Attr::CFReturnsNotRetained:
> - case Attr::CFReturnsRetained:
> - case Attr::NSReturnsNotRetained:
> - case Attr::NSReturnsRetained:
> - case Attr::ObjCException:
> - case Attr::ObjCNSObject:
> - case Attr::Overloadable:
> - case Attr::Override:
> + case attr::CFReturnsNotRetained:
> + case attr::CFReturnsRetained:
> + case attr::NSReturnsNotRetained:
> + case attr::NSReturnsRetained:
> + case attr::ObjCException:
> + case attr::ObjCNSObject:
> + case attr::Overloadable:
> + case attr::Override:
> break;
>
> - case Attr::MaxFieldAlignment:
> + case attr::MaxFieldAlignment:
> Record.push_back(cast<MaxFieldAlignmentAttr>(Attr)-
> >getAlignment());
> break;
>
> - case Attr::Packed:
> + case attr::Packed:
> break;
>
> - case Attr::Pure:
> + case attr::Pure:
> break;
>
> - case Attr::Regparm:
> + case attr::Regparm:
> Record.push_back(cast<RegparmAttr>(Attr)->getNumParams());
> break;
>
> - case Attr::ReqdWorkGroupSize:
> + case attr::ReqdWorkGroupSize:
> Record.push_back(cast<ReqdWorkGroupSizeAttr>(Attr)->getXDim());
> Record.push_back(cast<ReqdWorkGroupSizeAttr>(Attr)->getYDim());
> Record.push_back(cast<ReqdWorkGroupSizeAttr>(Attr)->getZDim());
> break;
>
> - case Attr::Section:
> + case attr::Section:
> AddString(cast<SectionAttr>(Attr)->getName(), Record);
> break;
>
> - case Attr::StdCall:
> - case Attr::TransparentUnion:
> - case Attr::Unavailable:
> - case Attr::Unused:
> - case Attr::Used:
> + case attr::StdCall:
> + case attr::TransparentUnion:
> + case attr::Unavailable:
> + case attr::Unused:
> + case attr::Used:
> break;
>
> - case Attr::Visibility:
> + case attr::Visibility:
> // FIXME: stable encoding
> Record.push_back(cast<VisibilityAttr>(Attr)->getVisibility());
> break;
>
> - case Attr::WarnUnusedResult:
> - case Attr::Weak:
> - case Attr::WeakRef:
> - case Attr::WeakImport:
> + case attr::WarnUnusedResult:
> + case attr::Weak:
> + case attr::WeakRef:
> + case attr::WeakImport:
> break;
> }
> }
>
> Modified: cfe/trunk/tools/libclang/CXCursor.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/libclang/CXCursor.cpp?rev=106172&r1=106171&r2=106172&view=diff
> =
> =
> =
> =
> =
> =
> =
> =
> ======================================================================
> --- cfe/trunk/tools/libclang/CXCursor.cpp (original)
> +++ cfe/trunk/tools/libclang/CXCursor.cpp Wed Jun 16 18:43:53 2010
> @@ -78,9 +78,9 @@
> assert(A && "Invalid arguments!");
> switch (A->getKind()) {
> default: break;
> - case Attr::IBActionKind: return CXCursor_IBActionAttr;
> - case Attr::IBOutletKind: return CXCursor_IBOutletAttr;
> - case Attr::IBOutletCollectionKind: return
> CXCursor_IBOutletCollectionAttr;
> + case attr::IBAction: return CXCursor_IBActionAttr;
> + case attr::IBOutlet: return CXCursor_IBOutletAttr;
> + case attr::IBOutletCollection: return
> CXCursor_IBOutletCollectionAttr;
> }
>
> return CXCursor_UnexposedAttr;
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
More information about the cfe-commits
mailing list