re PR c++/80459 (c-c++-common/opaque-vector.c FAILs)
authorJakub Jelinek <jakub@redhat.com>
Wed, 19 Apr 2017 16:31:11 +0000 (18:31 +0200)
committerJakub Jelinek <jakub@gcc.gnu.org>
Wed, 19 Apr 2017 16:31:11 +0000 (18:31 +0200)
PR c++/80459
* c-c++-common/opaque-vector.c (SIZEOF_MAXINT): Define.
(f): Don't test long double vectors if __SIZEOF_LONG_DOUBLE__
is not power of 2, or is more than 16 or more than SIZEOF_MAXINT.

From-SVN: r247001

gcc/testsuite/ChangeLog
gcc/testsuite/c-c++-common/opaque-vector.c

index 113506b6264a009876a9b24359ef2e98e2ea2413..4c68324c1ff2cdf19bdeaa496ee180eac27b96ef 100644 (file)
@@ -1,5 +1,10 @@
 2017-04-19  Jakub Jelinek  <jakub@redhat.com>
 
+       PR c++/80459
+       * c-c++-common/opaque-vector.c (SIZEOF_MAXINT): Define.
+       (f): Don't test long double vectors if __SIZEOF_LONG_DOUBLE__
+       is not power of 2, or is more than 16 or more than SIZEOF_MAXINT.
+
        PR debug/80436
        * g++.dg/opt/pr80436.C: New test.
 
index bac3497be3e2fad871065ca12363cac6ce27c914..ae4a9a84bbd45f44eb1e030834f4654b1f319c06 100644 (file)
@@ -5,6 +5,11 @@
 #define T_TEST(TYPE)
 #endif
 #define T(TYPE) B_TEST(TYPE) T_TEST(TYPE)
+#ifdef __SIZEOF_INT128__
+#define SIZEOF_MAXINT __SIZEOF_INT128__
+#else
+#define SIZEOF_MAXINT __SIZEOF_LONG_LONG__
+#endif
 
 void f ()
 {
@@ -15,8 +20,13 @@ void f ()
 
   T_TEST(float)
   T_TEST(double)
-  /* Avoid trouble with non-power-of-two sizes.  */
-#if !defined(__i386__) && !defined(__x86_64__) && !defined(__m68k__) && !defined(__ia64__) && !defined(__hppa__)
+  /* Avoid trouble with non-power-of-two sizes.
+     Also avoid trouble with long double larger than integral types.  */
+#if !defined(__i386__) && !defined(__x86_64__) && !defined(__m68k__) \
+    && !defined(__ia64__) && !defined(__hppa__) \
+    && (__SIZEOF_LONG_DOUBLE__ & (__SIZEOF_LONG_DOUBLE__ - 1)) == 0 \
+    && __SIZEOF_LONG_DOUBLE__ <= 16 \
+    && __SIZEOF_LONG_DOUBLE__ <= SIZEOF_MAXINT
   T_TEST(long double)
 #endif
 }