Remove two uses of the gcc specific 'aligned' attribute. This
authorDuncan Sands <baldrick@free.fr>
Sun, 3 Oct 2010 15:15:19 +0000 (15:15 +0000)
committerDuncan Sands <baldrick@free.fr>
Sun, 3 Oct 2010 15:15:19 +0000 (15:15 +0000)
is partly because this attribute caused trouble in the past (the
SmallVector one had to be changed from aligned to aligned(8) due
to causing crashes on i386 for example; in theory the same might
be needed in the Allocator case...).  But it's mostly because
there seems to be no point in special casing gcc here.  Using the
same implementation for all compilers results in better testing.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115462 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/ADT/SmallVector.h
include/llvm/Support/Allocator.h

index 1d6181a95da3640f34b58ab3fd5f90d7cce857a8..4efd6c7490628f6a596ad73b8dc50186cb013b6a 100644 (file)
@@ -59,17 +59,11 @@ protected:
   // something else.  An array of char would work great, but might not be
   // aligned sufficiently.  Instead, we either use GCC extensions, or some
   // number of union instances for the space, which guarantee maximal alignment.
-  struct U {
-#ifdef __GNUC__
-    char X __attribute__((aligned(8)));
-#else
-    union {
-      double D;
-      long double LD;
-      long long L;
-      void *P;
-    } X;
-#endif
+  union U {
+    double D;
+    long double LD;
+    long long L;
+    void *P;
   } FirstEl;
   // Space after 'FirstEl' is clobbered, do not add any instance vars after it.
 
index 4a7251fa1ef334069f403fccbe2ac87573072e18..0b7151a72c18ad387202e441f175e84fe8eb52fb 100644 (file)
@@ -221,16 +221,12 @@ public:
 inline void *operator new(size_t Size, llvm::BumpPtrAllocator &Allocator) {
   struct S {
     char c;
-#ifdef __GNUC__
-    char x __attribute__((aligned));
-#else
     union {
       double D;
       long double LD;
       long long L;
       void *P;
     } x;
-#endif
   };
   return Allocator.Allocate(Size, std::min((size_t)llvm::NextPowerOf2(Size),
                                            offsetof(S, x)));