]> granicus.if.org Git - clang/commitdiff
AST: Rename PragmaPackAttr to MaxFieldAlignmentAttr, which is more accurate.
authorDaniel Dunbar <daniel@zuster.org>
Thu, 27 May 2010 01:12:46 +0000 (01:12 +0000)
committerDaniel Dunbar <daniel@zuster.org>
Thu, 27 May 2010 01:12:46 +0000 (01:12 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@104795 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/AST/Attr.h
lib/AST/AttrImpl.cpp
lib/AST/RecordLayoutBuilder.cpp
lib/CodeGen/CGRecordLayoutBuilder.cpp
lib/Frontend/PCHReaderDecl.cpp
lib/Frontend/PCHWriter.cpp
lib/Sema/SemaDecl.cpp

index f41fbf9bcf3cfd2ea6163a78d79e8f2ac90da6db..29b9d6354504e5de0e2d584002aeeb3ed7e6303e 100644 (file)
@@ -67,6 +67,7 @@ public:
     IBOutletCollectionKind, // Clang-specific.
     IBActionKind, // Clang-specific. Use "Kind" suffix to not conflict w/ macro.
     Malloc,
+    MaxFieldAlignment,
     NoDebug,
     NoInline,
     NonNull,
@@ -81,7 +82,6 @@ public:
     NSReturnsNotRetained,   // Clang/Checker-specific.
     Overloadable, // Clang-specific
     Packed,
-    PragmaPack,
     Pure,
     Regparm,
     ReqdWorkGroupSize,   // OpenCL-specific
@@ -186,11 +186,14 @@ public:                                                                 \
 
 DEF_SIMPLE_ATTR(Packed);
 
-class PragmaPackAttr : public Attr {
+/// \brief Attribute for specifying a maximum field alignment; this is only
+/// valid on record decls.
+class MaxFieldAlignmentAttr : public Attr {
   unsigned Alignment;
 
 public:
-  PragmaPackAttr(unsigned alignment) : Attr(PragmaPack), Alignment(alignment) {}
+  MaxFieldAlignmentAttr(unsigned alignment)
+    : Attr(MaxFieldAlignment), Alignment(alignment) {}
 
   /// getAlignment - The specified alignment in bits.
   unsigned getAlignment() const { return Alignment; }
@@ -199,9 +202,9 @@ public:
 
   // Implement isa/cast/dyncast/etc.
   static bool classof(const Attr *A) {
-    return A->getKind() == PragmaPack;
+    return A->getKind() == MaxFieldAlignment;
   }
-  static bool classof(const PragmaPackAttr *A) { return true; }
+  static bool classof(const MaxFieldAlignmentAttr *A) { return true; }
 };
 
 class AlignedAttr : public Attr {
index 1f3510d7b507db417344077d3325052d80b081eb..dbceeab6bd66f5d5d521106abd97dfcd61bc5375 100644 (file)
@@ -111,8 +111,8 @@ DEF_SIMPLE_ATTR_CLONE(WeakImport)
 DEF_SIMPLE_ATTR_CLONE(WeakRef)
 DEF_SIMPLE_ATTR_CLONE(X86ForceAlignArgPointer)
 
-Attr* PragmaPackAttr::clone(ASTContext &C) const {
-  return ::new (C) PragmaPackAttr(Alignment);
+Attr* MaxFieldAlignmentAttr::clone(ASTContext &C) const {
+  return ::new (C) MaxFieldAlignmentAttr(Alignment);
 }
 
 Attr* AlignedAttr::clone(ASTContext &C) const {
index 78f9194d73593e5328f337adc58183e1b5a7eb37..8a1885a064d74d6f579d5658aa1cbb611ff4090c 100644 (file)
@@ -782,9 +782,8 @@ void RecordLayoutBuilder::InitializeLayout(const RecordDecl *D) {
   
   Packed = D->hasAttr<PackedAttr>();
   
-  // The #pragma pack attribute specifies the maximum field alignment.
-  if (const PragmaPackAttr *PPA = D->getAttr<PragmaPackAttr>())
-    MaxFieldAlignment = PPA->getAlignment();
+  if (const MaxFieldAlignmentAttr *MFAA = D->getAttr<MaxFieldAlignmentAttr>())
+    MaxFieldAlignment = MFAA->getAlignment();
   
   if (const AlignedAttr *AA = D->getAttr<AlignedAttr>())
     UpdateAlignment(AA->getMaxAlignment());
@@ -862,12 +861,12 @@ void RecordLayoutBuilder::Layout(const ObjCInterfaceDecl *D) {
 
   Packed = D->hasAttr<PackedAttr>();
 
-  // The #pragma pack attribute specifies the maximum field alignment.
-  if (const PragmaPackAttr *PPA = D->getAttr<PragmaPackAttr>())
-    MaxFieldAlignment = PPA->getAlignment();
+  if (const MaxFieldAlignmentAttr *MFAA = D->getAttr<MaxFieldAlignmentAttr>())
+    MaxFieldAlignment = MFAA->getAlignment();
 
   if (const AlignedAttr *AA = D->getAttr<AlignedAttr>())
     UpdateAlignment(AA->getMaxAlignment());
+
   // Layout each ivar sequentially.
   llvm::SmallVector<ObjCIvarDecl*, 16> Ivars;
   Context.ShallowCollectObjCIvars(D, Ivars);
index c93e093a43446a37c86b186dc14aeab12804dee5..9f1687577c3ec2fcbff8981a7d44ca1806d705e2 100644 (file)
@@ -329,8 +329,9 @@ bool CGRecordLayoutBuilder::LayoutField(const FieldDecl *D,
 
   if (const RecordType *RT = D->getType()->getAs<RecordType>()) {
     const RecordDecl *RD = cast<RecordDecl>(RT->getDecl());
-    if (const PragmaPackAttr *PPA = RD->getAttr<PragmaPackAttr>()) {
-      if (PPA->getAlignment() != TypeAlignment * 8 && !Packed)
+    if (const MaxFieldAlignmentAttr *MFAA =
+          RD->getAttr<MaxFieldAlignmentAttr>()) {
+      if (MFAA->getAlignment() != TypeAlignment * 8 && !Packed)
         return false;
     }
   }
index 0aee70cedc4a2beece0a8324f99e299b4fdf544a..933034e7a0d3de1a3395d64becffabb12660274b 100644 (file)
@@ -765,7 +765,7 @@ Attr *PCHReader::ReadAttributes() {
     SIMPLE_ATTR(Overloadable);
     SIMPLE_ATTR(Override);
     SIMPLE_ATTR(Packed);
-    UNSIGNED_ATTR(PragmaPack);
+    UNSIGNED_ATTR(MaxFieldAlignment);
     SIMPLE_ATTR(Pure);
     UNSIGNED_ATTR(Regparm);
     STRING_ATTR(Section);
index 6887d847e9816c03dacddc769b3a601f002044cb..efa0e3741ee819598b7ebdc87c5a19df0c463db8 100644 (file)
@@ -1943,8 +1943,8 @@ void PCHWriter::WriteAttributeRecord(const Attr *Attr) {
     case Attr::Override:
       break;
 
-    case Attr::PragmaPack:
-      Record.push_back(cast<PragmaPackAttr>(Attr)->getAlignment());
+    case Attr::MaxFieldAlignment:
+      Record.push_back(cast<MaxFieldAlignmentAttr>(Attr)->getAlignment());
       break;
 
     case Attr::Packed:
index 6fe91905dc5488fde06f81c484794f9487cc5ba7..9d87694a612aea4bc019e13e22783a977cef495a 100644 (file)
@@ -5410,7 +5410,7 @@ CreateNewDecl:
     // the #pragma tokens are effectively skipped over during the
     // parsing of the struct).
     if (unsigned Alignment = getPragmaPackAlignment())
-      New->addAttr(::new (Context) PragmaPackAttr(Alignment * 8));
+      New->addAttr(::new (Context) MaxFieldAlignmentAttr(Alignment * 8));
   }
 
   // If this is a specialization of a member class (of a class template),