From 3cd383fd6d32752db39734c5fd084e0ca7c08aed Mon Sep 17 00:00:00 2001
From: Alexander Ivchenko <alexander.ivchenko@intel.com>
Date: Thu, 13 Nov 2014 09:08:18 +0000
Subject: [PATCH] target-supports.exp (error_h): New check.

gcc/testsuite/
	* lib/target-supports.exp (error_h): New check.
	(libc_has_complex_functions): Ditto.
	(tgmath_h): Ditto.
	* gcc.dg/builtins-59.c: Add libc_has_complex_functions check.
	* gcc.dg/builtins-61.c: Likewise.
	* gcc.dg/builtins-67.c: Disable test for Bionic.
	* gcc.dg/strlenopt-14g.c: Likewise.
	* gcc.dg/strlenopt-14gf.c: Likewise.
	* gcc.dg/c99-tgmath-1.c: Add tgmath_h check.
	* gcc.dg/c99-tgmath-2.c: Likewise.
	* gcc.dg/c99-tgmath-3.c: Likewise.
	* gcc.dg/c99-tgmath-4.c: Likewise.
	* gcc.dg/dfp/convert-dfp-round-thread.c: Add error_h check.

From-SVN: r217467
---
 gcc/testsuite/ChangeLog                       | 16 +++++++++++++
 gcc/testsuite/gcc.dg/builtins-59.c            |  1 +
 gcc/testsuite/gcc.dg/builtins-61.c            |  1 +
 gcc/testsuite/gcc.dg/builtins-67.c            |  2 ++
 gcc/testsuite/gcc.dg/c99-tgmath-1.c           |  1 +
 gcc/testsuite/gcc.dg/c99-tgmath-2.c           |  1 +
 gcc/testsuite/gcc.dg/c99-tgmath-3.c           |  1 +
 gcc/testsuite/gcc.dg/c99-tgmath-4.c           |  1 +
 .../gcc.dg/dfp/convert-dfp-round-thread.c     |  2 ++
 gcc/testsuite/gcc.dg/strlenopt-14g.c          |  2 ++
 gcc/testsuite/gcc.dg/strlenopt-14gf.c         |  2 ++
 gcc/testsuite/lib/target-supports.exp         | 24 +++++++++++++++++++
 12 files changed, 54 insertions(+)

diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 66c66c49231f..5376ce194323 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,19 @@
+2014-11-12  Alexander Ivchenko  <alexander.ivchenko@intel.com>
+
+	* lib/target-supports.exp (error_h): New check.
+	(libc_has_complex_functions): Ditto.
+	(tgmath_h): Ditto.
+	* gcc.dg/builtins-59.c: Add libc_has_complex_functions check.
+	* gcc.dg/builtins-61.c: Likewise.
+	* gcc.dg/builtins-67.c: Disable test for Bionic.
+	* gcc.dg/strlenopt-14g.c: Likewise.
+	* gcc.dg/strlenopt-14gf.c: Likewise.
+	* gcc.dg/c99-tgmath-1.c: Add tgmath_h check.
+	* gcc.dg/c99-tgmath-2.c: Likewise.
+	* gcc.dg/c99-tgmath-3.c: Likewise.
+	* gcc.dg/c99-tgmath-4.c: Likewise.
+	* gcc.dg/dfp/convert-dfp-round-thread.c: Add error_h check.
+
 2014-11-12  Jakub Jelinek  <jakub@redhat.com>
 
 	PR ipa/63838
diff --git a/gcc/testsuite/gcc.dg/builtins-59.c b/gcc/testsuite/gcc.dg/builtins-59.c
index b940d39ed60e..f5c1803d5df8 100644
--- a/gcc/testsuite/gcc.dg/builtins-59.c
+++ b/gcc/testsuite/gcc.dg/builtins-59.c
@@ -1,6 +1,7 @@
 /* { dg-do compile } */
 /* { dg-options "-fdump-tree-gimple" } */
 /* { dg-require-effective-target c99_runtime } */
+/* { dg-require-effective-target libc_has_complex_functions } */
 
 double test (double x)
 {
diff --git a/gcc/testsuite/gcc.dg/builtins-61.c b/gcc/testsuite/gcc.dg/builtins-61.c
index dff163ff112e..a3310afbac2f 100644
--- a/gcc/testsuite/gcc.dg/builtins-61.c
+++ b/gcc/testsuite/gcc.dg/builtins-61.c
@@ -1,6 +1,7 @@
 /* { dg-do compile } */
 /* { dg-options "-O -ffast-math -fdump-tree-optimized" } */
 /* { dg-require-effective-target c99_runtime } */
+/* { dg-require-effective-target libc_has_complex_functions } */
 
 double test1 (double x)
 {
diff --git a/gcc/testsuite/gcc.dg/builtins-67.c b/gcc/testsuite/gcc.dg/builtins-67.c
index 22267bd31b91..0992fe1597f6 100644
--- a/gcc/testsuite/gcc.dg/builtins-67.c
+++ b/gcc/testsuite/gcc.dg/builtins-67.c
@@ -3,6 +3,8 @@
 /* { dg-do link } */
 /* { dg-options "-ffast-math -lm" }  */
 /* { dg-add-options c99_runtime } */
+/* Bionic doesn't have rintl */
+/* { dg-require-effective-target non_bionic } */
 
 #include "builtins-config.h"
 
diff --git a/gcc/testsuite/gcc.dg/c99-tgmath-1.c b/gcc/testsuite/gcc.dg/c99-tgmath-1.c
index c7d848c7a6c1..cfa02a91d33f 100644
--- a/gcc/testsuite/gcc.dg/c99-tgmath-1.c
+++ b/gcc/testsuite/gcc.dg/c99-tgmath-1.c
@@ -3,6 +3,7 @@
 /* { dg-do preprocess { target c99_runtime } } */
 /* { dg-options "-std=iso9899:1999" } */
 /* { dg-add-options c99_runtime } */
+/* { dg-require-effective-target tgmath_h } */
 
 /* Test that tgmath defines the macros it's supposed to. */
 #include <tgmath.h>
diff --git a/gcc/testsuite/gcc.dg/c99-tgmath-2.c b/gcc/testsuite/gcc.dg/c99-tgmath-2.c
index d4f1f87cfa93..1a1153cc6eae 100644
--- a/gcc/testsuite/gcc.dg/c99-tgmath-2.c
+++ b/gcc/testsuite/gcc.dg/c99-tgmath-2.c
@@ -3,6 +3,7 @@
 /* { dg-do compile { target c99_runtime } } */
 /* { dg-options "-std=iso9899:1999" } */
 /* { dg-add-options c99_runtime } */
+/* { dg-require-effective-target tgmath_h } */
 
 /* Test that invoking type-generic sin on a float invokes sinf. */
 #include <tgmath.h>
diff --git a/gcc/testsuite/gcc.dg/c99-tgmath-3.c b/gcc/testsuite/gcc.dg/c99-tgmath-3.c
index 3e983042751f..a595cf68559a 100644
--- a/gcc/testsuite/gcc.dg/c99-tgmath-3.c
+++ b/gcc/testsuite/gcc.dg/c99-tgmath-3.c
@@ -3,6 +3,7 @@
 /* { dg-do compile { target c99_runtime } } */
 /* { dg-options "-std=iso9899:1999" } */
 /* { dg-add-options c99_runtime } */
+/* { dg-require-effective-target tgmath_h } */
 
 /* Test that invoking type-generic exp on a complex invokes cexp. */
 #include <tgmath.h>
diff --git a/gcc/testsuite/gcc.dg/c99-tgmath-4.c b/gcc/testsuite/gcc.dg/c99-tgmath-4.c
index d8dc043c261b..c05a1c59ebca 100644
--- a/gcc/testsuite/gcc.dg/c99-tgmath-4.c
+++ b/gcc/testsuite/gcc.dg/c99-tgmath-4.c
@@ -3,6 +3,7 @@
 /* { dg-do compile { target c99_runtime } } */
 /* { dg-options "-std=iso9899:1999" } */
 /* { dg-add-options c99_runtime } */
+/* { dg-require-effective-target tgmath_h } */
 
 /* Test that invoking type-generic pow on complex float invokes cpowf. */
 #include <tgmath.h>
diff --git a/gcc/testsuite/gcc.dg/dfp/convert-dfp-round-thread.c b/gcc/testsuite/gcc.dg/dfp/convert-dfp-round-thread.c
index 6727e800c3f1..59d9569b84f8 100644
--- a/gcc/testsuite/gcc.dg/dfp/convert-dfp-round-thread.c
+++ b/gcc/testsuite/gcc.dg/dfp/convert-dfp-round-thread.c
@@ -1,5 +1,7 @@
 /* { dg-options "-std=gnu99 -D_GNU_SOURCE -pthread" } */
 /* { dg-do run { target i?86-*-linux* i?86-*-gnu* x86_64-*-linux* } } */
+/* { dg-require-effective-target error_h } */
+
 
 /* N1150 5.2: Conversions among decimal floating types and between
    decimal floating types and generic floating types.
diff --git a/gcc/testsuite/gcc.dg/strlenopt-14g.c b/gcc/testsuite/gcc.dg/strlenopt-14g.c
index 86c57f195f09..8bc47903be17 100644
--- a/gcc/testsuite/gcc.dg/strlenopt-14g.c
+++ b/gcc/testsuite/gcc.dg/strlenopt-14g.c
@@ -1,6 +1,8 @@
 /* This test needs runtime that provides stpcpy and mempcpy functions.  */
 /* { dg-do run { target *-*-linux* *-*-gnu* } } */
 /* { dg-options "-O2 -fdump-tree-strlen" } */
+/* Bionic targets don't have mempcpy */
+/* { dg-require-effective-target non_bionic } */
 
 #define USE_GNU
 #include "strlenopt.h"
diff --git a/gcc/testsuite/gcc.dg/strlenopt-14gf.c b/gcc/testsuite/gcc.dg/strlenopt-14gf.c
index 8b78538d41df..54bb3a1b0655 100644
--- a/gcc/testsuite/gcc.dg/strlenopt-14gf.c
+++ b/gcc/testsuite/gcc.dg/strlenopt-14gf.c
@@ -2,6 +2,8 @@
    functions.  */
 /* { dg-do run { target *-*-linux* *-*-gnu* } } */
 /* { dg-options "-O2 -fdump-tree-strlen" } */
+/* Bionic targets don't have mempcpy */
+/* { dg-require-effective-target non_bionic } */
 
 #define FORTIFY_SOURCE 2
 #include "strlenopt-14g.c"
diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
index a31d050b4360..02b2b778418e 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -5124,6 +5124,30 @@ proc check_effective_target_non_bionic {} {
     }]
 }
 
+# Return true if this target has error.h header.
+
+proc check_effective_target_error_h {} {
+    return [check_no_compiler_messages error_h object {
+ #include <error.h>
+    }]
+}
+
+# Return true if this target has tgmath.h header.
+
+proc check_effective_target_tgmath_h {} {
+    return [check_no_compiler_messages tgmath_h object {
+ #include <tgmath.h>
+    }]
+}
+
+# Return true if target's libc supports complex functions.
+
+proc check_effective_target_libc_has_complex_functions {} {
+    return [check_no_compiler_messages libc_has_complex_functions object {
+ #include <complex.h>
+    }]
+}
+
 # Return 1 if
 #   (a) an error of a few ULP is expected in string to floating-point
 #       conversion functions; and
-- 
GitLab