aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.dg/torture/builtin-minmax-1.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/gcc.dg/torture/builtin-minmax-1.c')
-rw-r--r--gcc/testsuite/gcc.dg/torture/builtin-minmax-1.c33
1 files changed, 19 insertions, 14 deletions
diff --git a/gcc/testsuite/gcc.dg/torture/builtin-minmax-1.c b/gcc/testsuite/gcc.dg/torture/builtin-minmax-1.c
index 4948aa9e004..13831ad3a2e 100644
--- a/gcc/testsuite/gcc.dg/torture/builtin-minmax-1.c
+++ b/gcc/testsuite/gcc.dg/torture/builtin-minmax-1.c
@@ -15,10 +15,6 @@ extern void link_error(int);
extern float FUNC##f (float); \
extern double FUNC (double); \
extern long double FUNC##l (long double)
-#define DECLARE_L(FUNC) \
- extern long FUNC##f (float); \
- extern long FUNC (double); \
- extern long FUNC##l (long double)
#define DECLARE2(FUNC) \
extern float FUNC##f (float, float); \
extern double FUNC (double, double); \
@@ -26,9 +22,6 @@ extern void link_error(int);
DECLARE2(fmin);
DECLARE2(fmax);
-DECLARE_L(lround);
-DECLARE_L(lrint);
-DECLARE(sqrt);
DECLARE(fabs);
extern int pure(int) __attribute__ ((__pure__));
@@ -52,20 +45,32 @@ extern int pure(int) __attribute__ ((__pure__));
link_error(__LINE__); \
} while (0)
-/* Test that lround(FUNC(int,int)) == lrint(FUNC(int,int)), i.e. both
- lround() and lrint() should be folded away. */
-#define TEST_NONNEG(FUNC) do { \
- if (lroundf(FUNC##f(i,j)) != lrintf(FUNC##f(i,j))) \
+/* Test that FIXFUNC(FUNC(int1,int2)) == (TYPE)FUNC(int1,int2),
+ i.e. FIXFUNC should be folded away and replaced with a cast. */
+#define TEST_FIXFUNC(FUNC,FIXFUNC,TYPE) do { \
+ if (FIXFUNC##f(FUNC##f(i,j)) != (TYPE)FUNC##f(i,j)) \
link_error(__LINE__); \
- if (lround(FUNC(i,j)) != lrint(FUNC(i,j))) \
+ if (FIXFUNC(FUNC(i,j)) != (TYPE)FUNC(i,j)) \
link_error(__LINE__); \
- if (lroundl(FUNC##l(i,j)) != lrintl(FUNC##l(i,j))) \
+ if (FIXFUNC##l(FUNC##l(i,j)) != (TYPE)FUNC##l(i,j)) \
link_error(__LINE__); \
} while (0)
+/* Test that FUNC(int1,int2) has an integer return type. */
+#define TEST_INT(FUNC) do { \
+ TEST_FIXFUNC(FUNC,__builtin_lround,long); \
+ TEST_FIXFUNC(FUNC,__builtin_llround,long long); \
+ TEST_FIXFUNC(FUNC,__builtin_lrint,long); \
+ TEST_FIXFUNC(FUNC,__builtin_llrint,long long); \
+ TEST_FIXFUNC(FUNC,__builtin_lceil,long); \
+ TEST_FIXFUNC(FUNC,__builtin_llceil,long long); \
+ TEST_FIXFUNC(FUNC,__builtin_lfloor,long); \
+ TEST_FIXFUNC(FUNC,__builtin_llfloor,long long); \
+ } while (0)
+
/* Test that (long)fabs(FUNC(fabs(x),fabs(y))) ==
(long)FUNC(fabs(x),fabs(y)). We cast to (long) so "!=" folds. */
-#define TEST_INT(FUNC) do { \
+#define TEST_NONNEG(FUNC) do { \
if ((long)fabsf(FUNC##f(fabsf(xf),fabsf(yf))) != (long)FUNC##f(fabsf(xf),fabsf(yf))) \
link_error(__LINE__); \
if ((long)fabs(FUNC(fabs(x),fabs(y))) != (long)FUNC(fabs(x),fabs(y))) \