diff gcc/testsuite/gcc.dg/builtins-18.c @ 111:04ced10e8804

gcc 7
author kono
date Fri, 27 Oct 2017 22:46:09 +0900
parents
children 1830386684a0
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/gcc/testsuite/gcc.dg/builtins-18.c	Fri Oct 27 22:46:09 2017 +0900
@@ -0,0 +1,65 @@
+/* Copyright (C) 2003 Free Software Foundation.
+
+   Check that built-in cabs, cabsf and cabsl functions don't
+   break anything and produces the expected results.
+
+   Written by Roger Sayle, 1st June 2003.  */
+
+/* { dg-do link } */
+/* { dg-options "-O2 -ffast-math" } */
+/* { dg-add-options c99_runtime } */
+
+#include "builtins-config.h"
+
+extern void link_error(void);
+
+extern float cabsf (float _Complex);
+extern double cabs (double _Complex);
+extern long double cabsl (long double _Complex);
+
+int
+main (void)
+{
+  /* For each type, test both runtime and compile time (constant folding)
+     optimization.  */
+  float _Complex fc = 3.0F + 4.0iF;
+  double _Complex dc = 3.0 + 4.0i;
+  long double _Complex ldc = 3.0L + 4.0iL;
+
+#ifdef HAVE_C99_RUNTIME
+  /* Test floats.  */
+  if (cabsf (fc) != 5.0F)
+    link_error ();
+  if (__builtin_cabsf (fc) != 5.0F)
+    link_error ();
+  if (cabsf (3.0F + 4.0iF) != 5.0F)
+    link_error ();
+  if (__builtin_cabsf (3.0F + 4.0iF) != 5.0F)
+    link_error ();
+#endif
+
+  /* Test doubles.  */
+  if (cabs (dc) != 5.0)
+    link_error ();
+  if (__builtin_cabs (dc) != 5.0)
+    link_error ();
+  if (cabs (3.0 + 4.0i) != 5.0)
+    link_error ();
+  if (__builtin_cabs (3.0 + 4.0i) != 5.0)
+    link_error ();
+
+#ifdef HAVE_C99_RUNTIME
+  /* Test long doubles.  */
+  if (cabsl (ldc) != 5.0L)
+    link_error ();
+  if (__builtin_cabsl (ldc) != 5.0L)
+    link_error ();
+  if (cabsl (3.0L + 4.0iL) != 5.0L)
+    link_error ();
+  if (__builtin_cabsl (3.0L + 4.0iL) != 5.0L)
+    link_error ();
+#endif
+
+  return 0;
+}
+