aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite
diff options
context:
space:
mode:
authorRichard Sandiford <rsandifo@nildram.co.uk>2007-09-22 08:26:50 +0000
committerRichard Sandiford <rsandifo@gcc.gnu.org>2007-09-22 08:26:50 +0000
commit1018b4c3565d3c892addfc349b00b3519308211e (patch)
tree24108520810ea2907302064e54bef5f33f634077 /gcc/testsuite
parentdb9a0df07fc938a874309c5af28895bc347c0673 (diff)
downloadgcc-1018b4c3565d3c892addfc349b00b3519308211e.zip
gcc-1018b4c3565d3c892addfc349b00b3519308211e.tar.gz
gcc-1018b4c3565d3c892addfc349b00b3519308211e.tar.bz2
target-supports.exp (check_cached_effective_target): New procedure.
gcc/testsuite/ * lib/target-supports.exp (check_cached_effective_target): New procedure. (check_no_compiler_messages, check_no_messages_and_pattern): Use it. (check_effective_target_c99_runtime): New procedure. * gcc.dg/builtins-20.c (test3f): Wrap cargf check in HAVE_C99_RUNTIME. (test3l): Likewise cargl. * gcc.dg/builtins-59.c: Require c99_runtime. * gcc.dg/builtins-61.c: Likewise. * gcc.dg/builtins-62.c: Likewise. From-SVN: r128664
Diffstat (limited to 'gcc/testsuite')
-rw-r--r--gcc/testsuite/ChangeLog12
-rw-r--r--gcc/testsuite/gcc.dg/builtins-20.c16
-rw-r--r--gcc/testsuite/gcc.dg/builtins-59.c1
-rw-r--r--gcc/testsuite/gcc.dg/builtins-61.c1
-rw-r--r--gcc/testsuite/gcc.dg/builtins-62.c1
-rw-r--r--gcc/testsuite/lib/target-supports.exp61
6 files changed, 64 insertions, 28 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 84681ec..710d8df 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,17 @@
2007-09-22 Richard Sandiford <rsandifo@nildram.co.uk>
+ * lib/target-supports.exp (check_cached_effective_target): New
+ procedure.
+ (check_no_compiler_messages, check_no_messages_and_pattern): Use it.
+ (check_effective_target_c99_runtime): New procedure.
+ * gcc.dg/builtins-20.c (test3f): Wrap cargf check in HAVE_C99_RUNTIME.
+ (test3l): Likewise cargl.
+ * gcc.dg/builtins-59.c: Require c99_runtime.
+ * gcc.dg/builtins-61.c: Likewise.
+ * gcc.dg/builtins-62.c: Likewise.
+
+2007-09-22 Richard Sandiford <rsandifo@nildram.co.uk>
+
* lib/target-supports.exp (add_options_for_c99_runtime): New procedure.
* lib/target-supports-dg.exp (dg-add-options): Likewise.
* gcc.dg/builtins-18.c: Use { dg-add-options c99_runtime } instead of
diff --git a/gcc/testsuite/gcc.dg/builtins-20.c b/gcc/testsuite/gcc.dg/builtins-20.c
index 4acb921..43aa71b 100644
--- a/gcc/testsuite/gcc.dg/builtins-20.c
+++ b/gcc/testsuite/gcc.dg/builtins-20.c
@@ -449,9 +449,6 @@ void test2f(float x, float y)
void test3f(__complex__ float x, __complex__ float y, int i)
{
- if (cargf(x) != atan2f(__imag__ x, __real__ x))
- link_error ();
-
if (ccosf(x) != ccosf(-x))
link_error();
@@ -502,6 +499,11 @@ void test3f(__complex__ float x, __complex__ float y, int i)
if (ctanf(~(x/y)) != -ctanf(~(x/-y)))
link_error();
+
+#ifdef HAVE_C99_RUNTIME
+ if (cargf(x) != atan2f(__imag__ x, __real__ x))
+ link_error ();
+#endif
}
void test1l(long double x)
@@ -674,9 +676,6 @@ void test2l(long double x, long double y)
void test3l(__complex__ long double x, __complex__ long double y, int i)
{
- if (cargl(x) != atan2l(__imag__ x, __real__ x))
- link_error ();
-
if (ccosl(x) != ccosl(-x))
link_error();
@@ -727,6 +726,11 @@ void test3l(__complex__ long double x, __complex__ long double y, int i)
if (ctanl(~(x/y)) != -ctanl(~(x/-y)))
link_error();
+
+#ifdef HAVE_C99_RUNTIME
+ if (cargl(x) != atan2l(__imag__ x, __real__ x))
+ link_error ();
+#endif
}
int main()
diff --git a/gcc/testsuite/gcc.dg/builtins-59.c b/gcc/testsuite/gcc.dg/builtins-59.c
index a7da712..b940d39 100644
--- a/gcc/testsuite/gcc.dg/builtins-59.c
+++ b/gcc/testsuite/gcc.dg/builtins-59.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-fdump-tree-gimple" } */
+/* { dg-require-effective-target c99_runtime } */
double test (double x)
{
diff --git a/gcc/testsuite/gcc.dg/builtins-61.c b/gcc/testsuite/gcc.dg/builtins-61.c
index 9f0c990..dff163f 100644
--- a/gcc/testsuite/gcc.dg/builtins-61.c
+++ b/gcc/testsuite/gcc.dg/builtins-61.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O -ffast-math -fdump-tree-optimized" } */
+/* { dg-require-effective-target c99_runtime } */
double test1 (double x)
{
diff --git a/gcc/testsuite/gcc.dg/builtins-62.c b/gcc/testsuite/gcc.dg/builtins-62.c
index af7a02a..db62696 100644
--- a/gcc/testsuite/gcc.dg/builtins-62.c
+++ b/gcc/testsuite/gcc.dg/builtins-62.c
@@ -1,5 +1,6 @@
/* { dg-do compile } */
/* { dg-options "-O -ffinite-math-only -fdump-tree-optimized" } */
+/* { dg-require-effective-target c99_runtime } */
double test1 (double x)
{
diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
index 8bbb141..7c6aef0 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -87,43 +87,41 @@ proc current_target_name { } {
}
# Implement an effective-target check for property PROP by invoking
-# the compiler and seeing if it prints any messages. Assume that the
-# property holds if the compiler doesn't print anything. The other
-# arguments are as for get_compiler_messages, starting with TYPE.
-proc check_no_compiler_messages {prop args} {
+# the Tcl command ARGS and seeing if it returns true.
+
+proc check_cached_effective_target { prop args } {
global et_cache
set target [current_target_name]
if {![info exists et_cache($prop,target)]
|| $et_cache($prop,target) != $target} {
- verbose "check_no_compiler_messages $prop: compiling source for $target" 2
+ verbose "check_cached_effective_target $prop: checking $target" 2
set et_cache($prop,target) $target
- set et_cache($prop,value) \
- [string match "" [eval get_compiler_messages $prop 0 $args]]
+ set et_cache($prop,value) [uplevel eval $args]
}
set value $et_cache($prop,value)
- verbose "check_no_compiler_messages $prop: returning $value for $target" 2
+ verbose "check_cached_effective_target $prop: returning $value for $target" 2
return $value
}
+# Implement an effective-target check for property PROP by invoking
+# the compiler and seeing if it prints any messages. Assume that the
+# property holds if the compiler doesn't print anything. The other
+# arguments are as for get_compiler_messages, starting with TYPE.
+proc check_no_compiler_messages {prop args} {
+ return [check_cached_effective_target $prop {
+ string match "" [eval get_compiler_messages $prop 0 $args]
+ }]
+}
+
# Similar to check_no_compiler_messages, but also verify that the regular
# expression PATTERN matches the compiler's output.
proc check_no_messages_and_pattern {prop pattern args} {
- global et_cache
-
- set target [current_target_name]
- if {![info exists et_cache($prop,target)]
- || $et_cache($prop,target) != $target} {
- verbose "check_no_messages_and_pattern $prop: compiling source for $target" 2
- set et_cache($prop,target) $target
+ return [check_cached_effective_target $prop {
set results [eval get_compiler_messages $prop 1 $args]
- set et_cache($prop,value) \
- [expr [string match "" [lindex $results 0]] \
- && [regexp $pattern [lindex $results 1]]]
- }
- set value $et_cache($prop,value)
- verbose "check_no_messages_and_pattern $prop: returning $value for $target" 2
- return $value
+ expr { [string match "" [lindex $results 0]]
+ && [regexp $pattern [lindex $results 1]] }
+ }]
}
###############################
@@ -2574,3 +2572,22 @@ proc add_options_for_c99_runtime { flags } {
}
return $flags
}
+
+# Return 1 if the target provides a full C99 runtime.
+
+proc check_effective_target_c99_runtime { } {
+ return [check_cached_effective_target c99_runtime {
+ global srcdir
+
+ set file [open "$srcdir/gcc.dg/builtins-config.h"]
+ set contents [read $file]
+ close $file
+ append contents {
+ #ifndef HAVE_C99_RUNTIME
+ #error FOO
+ #endif
+ }
+ string match "" [get_compiler_messages c99_runtime 0 assembly \
+ $contents [add_options_for_c99_runtime ""]]
+ }]
+}