https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101002

--- Comment #11 from Peter Bergner <bergner at gcc dot gnu.org> ---
(In reply to Segher Boessenkool from comment #9)
> (In reply to Peter Bergner from comment #4)
> > These die because the struct we're using to check the alignment of uses long
> > double as the "big" aligned type.  We could either disable the tests using a
> > "dg-require-effective-target longdouble128" or we could use a different more
> > aligned type in the struct.  Maybe _Float128 or _Decimal128 or use an
> > attribute aligned?   Thoughts?
> 
> Maybe just some vector type?  Those have 128-bit alignment even with
> -mno-altivec,
> right?

Actually, this fixes the two failing test cases for us.  i386, rs6000, pa and
ia64 ports all set that.  If people don't like that, I suppose we could just
add a test for __powerpc__ in addition to the i386 test.  Thoughts?

diff --git a/gcc/ginclude/stddef.h b/gcc/ginclude/stddef.h
index acac631c649..231c55f22d1 100644
--- a/gcc/ginclude/stddef.h
+++ b/gcc/ginclude/stddef.h
@@ -430,7 +430,7 @@ typedef struct {
      use __float128 here; that is only available on some
      architectures, but only on i386 is extra alignment needed for
      __float128.  */
-#ifdef __i386__
+#ifdef __SIZEOF_FLOAT128__
   __float128 __max_align_f128
__attribute__((__aligned__(__alignof(__float128))));
 #endif
 } max_align_t;

Reply via email to