OSDN Git Service

gcc/testsuite/
authorrsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 22 Sep 2007 08:26:50 +0000 (08:26 +0000)
committerrsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4>
Sat, 22 Sep 2007 08:26:50 +0000 (08:26 +0000)
* 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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@128664 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/builtins-20.c
gcc/testsuite/gcc.dg/builtins-59.c
gcc/testsuite/gcc.dg/builtins-61.c
gcc/testsuite/gcc.dg/builtins-62.c
gcc/testsuite/lib/target-supports.exp

index 84681ec..710d8df 100644 (file)
@@ -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
index 4acb921..43aa71b 100644 (file)
@@ -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()
index a7da712..b940d39 100644 (file)
@@ -1,5 +1,6 @@
 /* { dg-do compile } */
 /* { dg-options "-fdump-tree-gimple" } */
+/* { dg-require-effective-target c99_runtime } */
 
 double test (double x)
 {
index 9f0c990..dff163f 100644 (file)
@@ -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)
 {
index af7a02a..db62696 100644 (file)
@@ -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)
 {
index 8bbb141..7c6aef0 100644 (file)
@@ -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 ""]]
+    }]
+}