cdce3.C: Test long double math functions for large_long_double target only.
authorKaz Kojima <kkojima@gcc.gnu.org>
Wed, 2 Jul 2008 22:19:08 +0000 (22:19 +0000)
committerKaz Kojima <kkojima@gcc.gnu.org>
Wed, 2 Jul 2008 22:19:08 +0000 (22:19 +0000)
* g++.dg/cdce3.C: Test long double math functions for
large_long_double target only.  Skip pow10 and exp10
functions for *-*-darwin*.

From-SVN: r137394

gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/cdce3.C

index 78562ce90a11e678ad868e1b7b3b98e50e57c4ca..d7ef19ff58b7bff5151a5247d95e633b3e315df8 100644 (file)
@@ -1,3 +1,9 @@
+2008-07-02  Kaz Kojima  <kkojima@gcc.gnu.org>
+
+       * g++.dg/cdce3.C: Test long double math functions for
+       large_long_double target only.  Skip pow10 and exp10
+       functions for *-*-darwin*.
+
 2008-07-02  Janus Weil  <janus@gcc.gnu.org>
            Tobias Burnus  <burnus@net-b.de>
 
index 6c6afc89027afba272a5795305937490322405f6..19f7f0b295ae75f702e601a5c02504be2249194f 100644 (file)
@@ -1,21 +1,23 @@
-/* { dg-do  run { target { ! "*-*-darwin*" } } } */
-/* { dg-options "-O2 -fmath-errno -fdump-tree-cdce-details  -lm" } */
-/* { dg-final { scan-tree-dump  "cdce3.C:68: note: function call is shrink-wrapped into error conditions\." "cdce" } }*/
-/* { dg-final { scan-tree-dump  "cdce3.C:69: note: function call is shrink-wrapped into error conditions\." "cdce" } }*/
-/* { dg-final { scan-tree-dump  "cdce3.C:70: note: function call is shrink-wrapped into error conditions\." "cdce" } }*/
-/* { dg-final { scan-tree-dump  "cdce3.C:71: note: function call is shrink-wrapped into error conditions\." "cdce" } }*/
-/* { dg-final { scan-tree-dump  "cdce3.C:72: note: function call is shrink-wrapped into error conditions\." "cdce" } }*/
-/* { dg-final { scan-tree-dump  "cdce3.C:73: note: function call is shrink-wrapped into error conditions\." "cdce" } }*/
-/* { dg-final { scan-tree-dump  "cdce3.C:74: note: function call is shrink-wrapped into error conditions\." "cdce" } }*/
-/* { dg-final { scan-tree-dump  "cdce3.C:75: note: function call is shrink-wrapped into error conditions\." "cdce" } }*/
-/* { dg-final { scan-tree-dump  "cdce3.C:76: note: function call is shrink-wrapped into error conditions\." "cdce" } }*/
-/* { dg-final { scan-tree-dump  "cdce3.C:77: note: function call is shrink-wrapped into error conditions\." "cdce" } }*/
-/* { dg-final { scan-tree-dump  "cdce3.C:78: note: function call is shrink-wrapped into error conditions\." "cdce" } }*/
-/* { dg-final { scan-tree-dump  "cdce3.C:79: note: function call is shrink-wrapped into error conditions\." "cdce" } }*/
-/* { dg-final { scan-tree-dump  "cdce3.C:80: note: function call is shrink-wrapped into error conditions\." "cdce" } }*/
-/* { dg-final { scan-tree-dump  "cdce3.C:81: note: function call is shrink-wrapped into error conditions\." "cdce" } }*/
-/* { dg-final { scan-tree-dump  "cdce3.C:82: note: function call is shrink-wrapped into error conditions\." "cdce" } }*/
-/* { dg-final { scan-tree-dump  "cdce3.C:83: note: function call is shrink-wrapped into error conditions\." "cdce" } }*/
+/* { dg-do run } */
+/* { dg-options "-O2 -fmath-errno -fdump-tree-cdce-details -DNO_GNU_EXTENSION -lm" { target "*-*-darwin*" } } */
+/* { dg-options "-O2 -fmath-errno -fdump-tree-cdce-details  -lm" { target { {! "*-*-darwin*" } && large_long_double } } }*/
+/* { dg-options "-O2 -fmath-errno -fdump-tree-cdce-details -DNO_LONG_DOUBLE -lm" { target {! large_long_double } } } */
+/* { dg-final { scan-tree-dump  "cdce3.C:89: note: function call is shrink-wrapped into error conditions\." "cdce" { target {! "*-*-darwin*" } } } }*/
+/* { dg-final { scan-tree-dump  "cdce3.C:90: note: function call is shrink-wrapped into error conditions\." "cdce" { target {! "*-*-darwin*" } } } }*/
+/* { dg-final { scan-tree-dump  "cdce3.C:92: note: function call is shrink-wrapped into error conditions\." "cdce" } }*/
+/* { dg-final { scan-tree-dump  "cdce3.C:93: note: function call is shrink-wrapped into error conditions\." "cdce" } }*/
+/* { dg-final { scan-tree-dump  "cdce3.C:94: note: function call is shrink-wrapped into error conditions\." "cdce" } }*/
+/* { dg-final { scan-tree-dump  "cdce3.C:95: note: function call is shrink-wrapped into error conditions\." "cdce" } }*/
+/* { dg-final { scan-tree-dump  "cdce3.C:96: note: function call is shrink-wrapped into error conditions\." "cdce" } }*/
+/* { dg-final { scan-tree-dump  "cdce3.C:97: note: function call is shrink-wrapped into error conditions\." "cdce" } }*/
+/* { dg-final { scan-tree-dump  "cdce3.C:98: note: function call is shrink-wrapped into error conditions\." "cdce" } }*/
+/* { dg-final { scan-tree-dump  "cdce3.C:99: note: function call is shrink-wrapped into error conditions\." "cdce" } }*/
+/* { dg-final { scan-tree-dump  "cdce3.C:100: note: function call is shrink-wrapped into error conditions\." "cdce" } }*/
+/* { dg-final { scan-tree-dump  "cdce3.C:101: note: function call is shrink-wrapped into error conditions\." "cdce" } }*/
+/* { dg-final { scan-tree-dump  "cdce3.C:102: note: function call is shrink-wrapped into error conditions\." "cdce" } }*/
+/* { dg-final { scan-tree-dump  "cdce3.C:103: note: function call is shrink-wrapped into error conditions\." "cdce" } }*/
+/* { dg-final { scan-tree-dump  "cdce3.C:104: note: function call is shrink-wrapped into error conditions\." "cdce" } }*/
+/* { dg-final { scan-tree-dump  "cdce3.C:105: note: function call is shrink-wrapped into error conditions\." "cdce" } }*/
 /* { dg-final { cleanup-tree-dump "cdce" } } */
 #include <stdlib.h>
 #include <math.h>
 #include <stdio.h>
 #endif
 #include <errno.h>
-typedef long double ldouble; 
 typedef void (*FP) (int xp);
 #define NI __attribute__((noinline))
+
+#if defined(NO_LONG_DOUBLE)
+double result;
+
+#define DEF_MATH_FUNC(prefix, name) NI void prefix##name##f (int x) \
+{ \
+  float yy = name##f ((float) x); \
+  STORE_RESULT; \
+} \
+NI void prefix##name (int x) \
+{ \
+  double yy = name ((double)x); \
+  STORE_RESULT; \
+}
+#else
+typedef long double ldouble; 
 ldouble result;
 
 #define DEF_MATH_FUNC(prefix, name) NI void prefix##name##f (int x) \
@@ -42,12 +59,15 @@ NI void prefix##name##l (int x) \
 { \
   ldouble yy = name##l ((ldouble)x); \
   STORE_RESULT; \
-} 
+}
+#endif
 
 #undef STORE_RESULT
 #define STORE_RESULT result = yy
+#if !defined(NO_GNU_EXTENSION)
 DEF_MATH_FUNC (m,pow10)
 DEF_MATH_FUNC (m,exp10)
+#endif
 DEF_MATH_FUNC (m,exp2)
 DEF_MATH_FUNC (m,exp)
 DEF_MATH_FUNC (m,expm1)
@@ -65,8 +85,10 @@ DEF_MATH_FUNC (m,sqrt)
 
 #undef STORE_RESULT
 #define STORE_RESULT
+#if !defined(NO_GNU_EXTENSION)
 DEF_MATH_FUNC (o,pow10)
 DEF_MATH_FUNC (o,exp10)
+#endif
 DEF_MATH_FUNC (o,exp2)
 DEF_MATH_FUNC (o,exp)
 DEF_MATH_FUNC (o,expm1)
@@ -82,9 +104,14 @@ DEF_MATH_FUNC (o,log10)
 DEF_MATH_FUNC (o,log1p)
 DEF_MATH_FUNC (o,sqrt)
 
+#if defined(NO_LONG_DOUBLE)
+#define INIT_MATH_FUNC(prefix, name, lb, ub) { prefix##name##f, #name "f", 0, 0, lb, ub }, \
+{ prefix##name, #name, 0, 0, lb, ub },
+#else
 #define INIT_MATH_FUNC(prefix, name, lb, ub) { prefix##name##f, #name "f", 0, 0, lb, ub }, \
 { prefix##name, #name, 0, 0, lb, ub }, \
 { prefix##name##l, #name "l" , 0, 0, lb, ub }, 
+#endif
 
 struct MathFuncInfo
 {
@@ -95,8 +122,10 @@ struct MathFuncInfo
   bool has_lb;
   bool has_ub;
 } math_func_arr[] = { 
+#if !defined(NO_GNU_EXTENSION)
   INIT_MATH_FUNC (m,pow10, false, true)
   INIT_MATH_FUNC (m,exp10, false, true)
+#endif
   INIT_MATH_FUNC (m,exp2, false, true)
   INIT_MATH_FUNC (m,expm1, false, true)
   INIT_MATH_FUNC (m,exp, false, true)
@@ -114,8 +143,11 @@ struct MathFuncInfo
   { 0, 0,  0, 0, 0, 0} };
 
 MathFuncInfo opt_math_func_arr[] = 
-{ INIT_MATH_FUNC (o,pow10, false, true)
+{
+#if !defined(NO_GNU_EXTENSION)
+  INIT_MATH_FUNC (o,pow10, false, true)
   INIT_MATH_FUNC (o,exp10, false, true)
+#endif
   INIT_MATH_FUNC (o,exp2, false, true)
   INIT_MATH_FUNC (o,expm1, false, true)
   INIT_MATH_FUNC (o,exp, false, true)