diff options
| author | ghazi <ghazi@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-09-09 03:13:45 +0000 |
|---|---|---|
| committer | ghazi <ghazi@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-09-09 03:13:45 +0000 |
| commit | 3bba5dcc3c0ddceb4cba3bd623b25e8a1413e6c5 (patch) | |
| tree | c34ed4f00c2820900bf0afb1a25c5573219db965 | |
| parent | be5a068c3ece0fcaf6745d16aafed10471a1048c (diff) | |
| download | ppe42-gcc-3bba5dcc3c0ddceb4cba3bd623b25e8a1413e6c5.tar.gz ppe42-gcc-3bba5dcc3c0ddceb4cba3bd623b25e8a1413e6c5.zip | |
* gcc.dg/builtins-1.c: Test existing _Complex functions.
* gcc.dg/torture/builtin-attr-1.c: Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@71225 138bc75d-0d04-0410-961f-82ee72b054a4
| -rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
| -rw-r--r-- | gcc/testsuite/gcc.dg/builtins-1.c | 25 | ||||
| -rw-r--r-- | gcc/testsuite/gcc.dg/torture/builtin-attr-1.c | 60 |
3 files changed, 90 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 3d9d3672faf..b50ad3df3ee 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2003-09-08 Kaveh R. Ghazi <ghazi@caip.rutgers.edu> + + * gcc.dg/builtins-1.c: Test existing _Complex functions. + * gcc.dg/torture/builtin-attr-1.c: Likewise. + 2003-09-08 Mark Mitchell <mark@codesourcery.com> PR c++/11786 diff --git a/gcc/testsuite/gcc.dg/builtins-1.c b/gcc/testsuite/gcc.dg/builtins-1.c index 85636fa9e87..adb27c26c8f 100644 --- a/gcc/testsuite/gcc.dg/builtins-1.c +++ b/gcc/testsuite/gcc.dg/builtins-1.c @@ -84,6 +84,25 @@ double test_##FN(double x, double *y, double *z) { __builtin_##FN(x, y, z); retu float test_##FN##f(float x, float *y, float *z) { __builtin_##FN##f(x, y, z); return *y * *z; } \ long double test_##FN##l(long double x, long double *y, long double *z) { __builtin_##FN##l(x, y, z); return *y * *z; } +/* Test Complex functions taking one Complex argument. */ +#define CPTEST1(FN) \ +_Complex double test_##FN(_Complex double x) { return __builtin_##FN(x); } \ +_Complex float test_##FN##f(_Complex float x) { return __builtin_##FN##f(x); } \ +_Complex long double test_##FN##l(_Complex long double x) { return __builtin_##FN##l(x); } + +/* Test Complex functions taking one Complex argument and returning an FP type. */ +#define CPTEST1RETFP(FN) \ +double test_##FN(_Complex double x) { return __builtin_##FN(x); } \ +float test_##FN##f(_Complex float x) { return __builtin_##FN##f(x); } \ +long double test_##FN##l(_Complex long double x) { return __builtin_##FN##l(x); } + +/* Test Complex functions taking two Complex arguments. */ +#define CPTEST2(FN) \ +_Complex double test_##FN(_Complex double x, _Complex double y) { return __builtin_##FN(x,y); } \ +_Complex float test_##FN##f(_Complex float x, _Complex float y) { return __builtin_##FN##f(x,y); } \ +_Complex long double test_##FN##l(_Complex long double x, _Complex long double y) { return __builtin_##FN##l(x,y); } + + /* Keep this list sorted alphabetically by function name. */ FPTEST1 (acos) FPTEST1 (acosh) @@ -158,3 +177,9 @@ FPTEST1 (trunc) FPTEST1 (y0) FPTEST1 (y1) FPTEST2ARG1 (yn, int) + +/* Keep this list sorted alphabetically by function name. */ +CPTEST1RETFP (cabs) +CPTEST1RETFP (cimag) +CPTEST1 (conj) +CPTEST1RETFP (creal) diff --git a/gcc/testsuite/gcc.dg/torture/builtin-attr-1.c b/gcc/testsuite/gcc.dg/torture/builtin-attr-1.c index 2bb16c321d3..451081da1ab 100644 --- a/gcc/testsuite/gcc.dg/torture/builtin-attr-1.c +++ b/gcc/testsuite/gcc.dg/torture/builtin-attr-1.c @@ -124,6 +124,32 @@ void test_builtin_##FN##f(float f1, float f2, float f3) \ void test_builtin_##FN##l(long double ld1, long double ld2, long double ld3) \ { if (__builtin_##FN##l(ld1,ld2,ld3) != __builtin_##FN##l(ld1,ld2,ld3)) link_failure_builtin_##FN##l(); } +/* Test the __builtin_ functions taking one complex argument (with the + "f" and "l" variants). */ +#define BUILTIN_CPTEST1(FN) \ +extern void link_failure_builtin_##FN(void); \ +extern void link_failure_builtin_##FN##f(void); \ +extern void link_failure_builtin_##FN##l(void); \ +void test_builtin_##FN(_Complex double d) \ +{ if (__builtin_##FN(d) != __builtin_##FN(d)) link_failure_builtin_##FN(); } \ +void test_builtin_##FN##f(_Complex float f) \ +{ if (__builtin_##FN##f(f) != __builtin_##FN##f(f)) link_failure_builtin_##FN##f(); } \ +void test_builtin_##FN##l(_Complex long double ld) \ +{ if (__builtin_##FN##l(ld) != __builtin_##FN##l(ld)) link_failure_builtin_##FN##l(); } + +/* Test the __builtin_ functions taking two complex arguments (with + the "f" and "l" variants). */ +#define BUILTIN_CPTEST2(FN) \ +extern void link_failure_builtin_##FN(void); \ +extern void link_failure_builtin_##FN##f(void); \ +extern void link_failure_builtin_##FN##l(void); \ +void test_builtin_##FN(_Complex double d1, _Complex double d2) \ +{ if (__builtin_##FN(d1,d2) != __builtin_##FN(d1,d2)) link_failure_builtin_##FN(); } \ +void test_builtin_##FN##f(_Complex float f1, _Complex float f2) \ +{ if (__builtin_##FN##f(f1,f2) != __builtin_##FN##f(f1,f2)) link_failure_builtin_##FN##f(); } \ +void test_builtin_##FN##l(_Complex long double ld1, _Complex long double ld2) \ +{ if (__builtin_##FN##l(ld1,ld2) != __builtin_##FN##l(ld1,ld2)) link_failure_builtin_##FN##l(); } + /* These macros additionally test the non-__builtin_ functions. */ /* Test the functions taking one FP argument (with the "f" and "l" @@ -198,6 +224,34 @@ void test_##FN##f(float f1, float f2, float f3) \ void test_##FN##l(long double ld1, long double ld2, long double ld3) \ { if (FN##l(ld1,ld2,ld3) != FN##l(ld1,ld2,ld3)) link_failure_##FN##l(); } +/* Test the functions taking one complex argument (with the "f" and + "l" variants). */ +#define CPTEST1(FN) \ +BUILTIN_CPTEST1(FN) \ +extern void link_failure_##FN(void); \ +extern void link_failure_##FN##f(void); \ +extern void link_failure_##FN##l(void); \ +void test_##FN(_Complex double d) \ +{ if (FN(d) != FN(d)) link_failure_##FN(); } \ +void test_##FN##f(_Complex float f) \ +{ if (FN##f(f) != FN##f(f)) link_failure_##FN##f(); } \ +void test_##FN##l(_Complex long double ld) \ +{ if (FN##l(ld) != FN##l(ld)) link_failure_##FN##l(); } + +/* Test the functions taking two complex arguments (with the "f" and + "l" variants). */ +#define CPTEST2(FN) \ +BUILTIN_CPTEST2(FN) \ +extern void link_failure_##FN(void); \ +extern void link_failure_##FN##f(void); \ +extern void link_failure_##FN##l(void); \ +void test_##FN(_Complex double d1, _Complex double d2) \ +{ if (FN(d1,d2) != FN(d1,d2)) link_failure_##FN(); } \ +void test_##FN##f(_Complex float f1, _Complex float f2) \ +{ if (FN##f(f1,f2) != FN##f(f1,f2)) link_failure_##FN##f(); } \ +void test_##FN##l(_Complex long double ld1, _Complex long double ld2) \ +{ if (FN##l(ld1,ld2) != FN##l(ld1,ld2)) link_failure_##FN##l(); } + /* Test the math builtins. */ FPTEST1 (acos) @@ -270,6 +324,12 @@ FPTEST1 (y0) FPTEST1 (y1) FPTEST2ARG1 (yn, int) +/* Test the complex math builtins. */ +/*CPTEST1 (cabs) See http://gcc.gnu.org/ml/gcc-patches/2003-09/msg00040.html */ +CPTEST1 (cimag) +CPTEST1 (conj) +CPTEST1 (creal) + /* Various other const builtins. */ TEST1 (abs, int) BUILTIN_TEST1 (clz, int) |

