Mercurial > hg > CbC > CbC_gcc
diff gcc/testsuite/gcc.dg/builtin-tgmath-3.c @ 131:84e7813d76e9
gcc-8.2
author | mir3636 |
---|---|
date | Thu, 25 Oct 2018 07:37:49 +0900 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gcc/testsuite/gcc.dg/builtin-tgmath-3.c Thu Oct 25 07:37:49 2018 +0900 @@ -0,0 +1,50 @@ +/* Test __builtin_tgmath: integer arguments mapped to _Float64. */ +/* { dg-do run } */ +/* { dg-options "" } */ +/* { dg-add-options float32 } */ +/* { dg-add-options float64 } */ +/* { dg-require-effective-target float32_runtime } */ +/* { dg-require-effective-target float64_runtime } */ + +extern void abort (void); +extern void exit (int); + +#define CHECK_CALL(C, E, V) \ + do \ + { \ + if ((C) != (E)) \ + abort (); \ + extern __typeof (C) V; \ + } \ + while (0) + +extern _Float32 var_f32; + +_Float32 t1f (float x) { return x + 1; } +_Float32 t1d (double x) { return x + 2; } +_Float32 t1l (long double x) { return x + 3; } +_Float32 t1f64 (_Float64 x) { return x + 4; } + +#define t1v(x) __builtin_tgmath (t1f, t1d, t1l, t1f64, x) + +static void +test_1 (void) +{ + float f = 1; + double d = 2; + long double ld = 3; + _Float64 f64 = 4; + int i = 5; + CHECK_CALL (t1v (f), 2, var_f32); + CHECK_CALL (t1v (d), 4, var_f32); + CHECK_CALL (t1v (ld), 6, var_f32); + CHECK_CALL (t1v (f64), 8, var_f32); + CHECK_CALL (t1v (i), 9, var_f32); +} + +int +main (void) +{ + test_1 (); + exit (0); +}