===================================================================
@@ -1393,8 +1393,10 @@ for any options added with @code{dg-add-options}.
Target has runtime support for any options added with
@code{dg-add-options} for any @code{_Float@var{n}} or
@code{_Float@var{n}x} type.
+
+@item inf
+Target supports floating point infinite (@code{inf}).
@end table
-
@subsubsection Fortran-specific attributes
@table @code
testsuite/ChangeLog:
2018-11-01 Paul Koning <ni1d@arrl.net>
* lib/target-supports.exp: Add check for "inf" effective target
keyword.
* gcc.dg/builtins-44.c: Skip if no infinite support.
* gcc.dg/builtins-45.c: Ditto.
* gcc.dg/torture/builtin-complex-1.c: Ditto.
* gcc.dg/torture/builtin-cproj-1.c: Ditto.
* gcc.dg/torture/builtin-frexp-1.c: Ditto.
* gcc.dg/torture/builtin-ldexp-1.c: Ditto.
* gcc.dg/torture/builtin-logb-1.c: Ditto.
* gcc.dg/torture/builtin-math-2.c: Ditto.
* gcc.dg/torture/builtin-math-5.c: Ditto.
* gcc.dg/torture/builtin-math-7.c: Ditto.
* gcc.dg/torture/builtin-modf-1.c: Ditto.
* gcc.dg/torture/type-generic-1.c: Ditto.
===================================================================
@@ -8933,3 +8933,10 @@ proc check_effective_target_cet { } {
}
} "-O2" ]
}
+
+# Return 1 if target supports floating point "infinite"
+proc check_effective_target_inf { } {
+ return [check_no_compiler_messages supports_inf assembly {
+ const double pinf = __builtin_inf ();
+ }]
+}
===================================================================
@@ -1,4 +1,5 @@
/* { dg-do compile } */
+/* { dg-require-effective-target inf } */
/* { dg-options "-O1 -fno-trapping-math -fno-finite-math-only -fdump-tree-optimized" } */
extern void f(int);
===================================================================
@@ -1,4 +1,5 @@
/* { dg-do compile } */
+/* { dg-require-effective-target inf } */
/* { dg-options "-O1 -fno-trapping-math -fno-finite-math-only -fdump-tree-optimized" } */
extern void f(int);
===================================================================
@@ -1,6 +1,7 @@
/* Test __builtin_complex semantics. */
/* { dg-do run } */
/* { dg-options "-std=c11 -pedantic-errors" } */
+/* { dg-require-effective-target inf } */
/* { dg-add-options ieee } */
extern void exit (int);
===================================================================
@@ -7,6 +7,7 @@
/* { dg-do link } */
/* { dg-skip-if "" { *-*-* } { "-O0" } { "" } } */
+/* { dg-require-effective-target inf } */
/* { dg-add-options ieee } */
/* All references to link_error should go away at compile-time. The
===================================================================
@@ -9,6 +9,7 @@
/* { dg-options "-fno-finite-math-only" { target sh*-*-* } } */
/* In order to fold algebraic exprs below, targets with "composite"
floating point formats need -funsafe-math-optimizations. */
+/* { dg-require-effective-target inf } */
/* { dg-options "-funsafe-math-optimizations" { target powerpc*-*-* } } */
extern void link_error(int);
===================================================================
@@ -7,6 +7,7 @@
/* { dg-do link } */
/* { dg-options "-fno-finite-math-only" { target sh*-*-* } } */
+/* { dg-require-effective-target inf } */
/* { dg-skip-if "" { *-*-* } { "-O0" } { "" } } */
extern void link_error(int);
===================================================================
@@ -9,6 +9,7 @@
/* { dg-options "-fno-finite-math-only" { target sh*-*-* } } */
/* In order to fold algebraic exprs below, targets with "composite"
floating point formats need -funsafe-math-optimizations. */
+/* { dg-require-effective-target inf } */
/* { dg-options "-funsafe-math-optimizations" { target powerpc*-*-* } } */
extern void link_error(int);
===================================================================
@@ -6,6 +6,7 @@
Origin: Kaveh R. Ghazi, October 22, 2006. */
/* { dg-do compile } */
+/* { dg-require-effective-target inf } */
/* { dg-options "-fdump-tree-original" } */
extern void foof (float);
===================================================================
@@ -6,6 +6,7 @@
Origin: Kaveh R. Ghazi, January 28, 2009. */
/* { dg-do compile } */
+/* { dg-require-effective-target inf } */
/* { dg-options "-fdump-tree-original" } */
extern void foof (_Complex float);
===================================================================
@@ -7,6 +7,7 @@
/* { dg-do run } */
/* C6X fails due to -freciprocal-math default. */
/* { dg-skip-if "" { tic6x-*-* } } */
+/* { dg-require-effective-target inf } */
/* { dg-add-options ieee } */
/* { dg-require-effective-target large_double } */
===================================================================
@@ -6,6 +6,7 @@
Origin: Kaveh R. Ghazi, February 23, 2007. */
/* { dg-do link } */
+/* { dg-require-effective-target inf } */
/* { dg-options "-fno-finite-math-only" { target sh*-*-* } } */
/* { dg-options "-funsafe-math-optimizations -fsigned-zeros -fno-associative-math" { target powerpc-*-darwin* powerpc*-*-linux* } } */
===================================================================
@@ -2,6 +2,7 @@
without any fast-math flags. */
/* { dg-do run } */
+/* { dg-require-effective-target inf } */
/* { dg-skip-if "No Inf/NaN support" { spu-*-* } } */
/* { dg-skip-if "No subnormal support" { csky-*-* } { "-mhard-float" } } */
/* { dg-options "-DUNSAFE" { target tic6x*-*-* visium-*-* nvptx-*-* } } */