Remove two uses of the gcc specific 'aligned' attribute. This

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
This commit is contained in:
Duncan Sands 2010-10-03 15:15:19 +00:00
parent 8e956f7e3e
commit 75e2016f02
2 changed files with 5 additions and 15 deletions

View 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.

View 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)));