]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
target-supports.exp (check_effective_target_hard_float): Only use the preprocessor...
authorHans-Peter Nilsson <hp@axis.com>
Mon, 4 Feb 2008 22:36:26 +0000 (22:36 +0000)
committerHans-Peter Nilsson <hp@gcc.gnu.org>
Mon, 4 Feb 2008 22:36:26 +0000 (22:36 +0000)
* lib/target-supports.exp (check_effective_target_hard_float): Only
use the preprocessor tests for mips*-*-* and xtensa-*-*.  For all
other targets, grep for a call insn in the rtl expand dump for an
add of two doubles.
(target_compile): Support generating rtl dumps as output.

From-SVN: r132102

gcc/testsuite/ChangeLog
gcc/testsuite/lib/target-supports.exp

index d1b8a5d0ee8bd92862f04506da67017bd378eea5..60348106696d12861699837c456324e97594ef56 100644 (file)
@@ -1,3 +1,11 @@
+2008-02-04  Hans-Peter Nilsson  <hp@axis.com>
+
+       * lib/target-supports.exp (check_effective_target_hard_float): Only
+       use the preprocessor tests for mips*-*-* and xtensa-*-*.  For all
+       other targets, grep for a call insn in the rtl expand dump for an
+       add of two doubles.
+       (target_compile): Support generating rtl dumps as output.
+
 2008-02-04  Richard Guenther  <rguenther@suse.de>
 
        PR middle-end/33631
index eacd831682777443e4f120a7ba8109233aa4e93e..1286a981cb22a4b67d9c6c7cb109f5b949bb7e83 100644 (file)
@@ -44,18 +44,32 @@ proc check_compile {basename type contents args} {
        "*// C++*" { set src ${basename}[pid].cc }
        default { set src ${basename}[pid].c }
     }
-    switch $type {
+    set compile_type $type
+    switch -glob $type {
        assembly { set output ${basename}[pid].s }
        object { set output ${basename}[pid].o }
        executable { set output ${basename}[pid].exe }
+       "rtl-*" {
+           set output ${basename}[pid].s
+           lappend options "additional_flags=-fdump-$type"
+           set compile_type assembly
+       }
     }
     set f [open $src "w"]
     puts $f $contents
     close $f
-    set lines [${tool}_target_compile $src $output $type "$options"]
+    set lines [${tool}_target_compile $src $output $compile_type "$options"]
     file delete $src
 
-    return [list $lines $output]
+    set scan_output $output
+    # Don't try folding this into the switch above; calling "glob" before the
+    # file is created won't work.
+    if [regexp "rtl-(.*)" $type dummy rtl_type] {
+       set scan_output "[glob $src.\[0-9\]\[0-9\]\[0-9\]r.$rtl_type]"
+       file delete $output
+    }
+
+    return [list $lines $scan_output]
 }
 
 proc current_target_name { } {
@@ -565,12 +579,19 @@ proc check_effective_target_mpaired_single { } {
 # Return true if the target has access to FPU instructions.
 
 proc check_effective_target_hard_float { } {
-    return [check_no_compiler_messages hard_float assembly {
-       #if ((defined __mips \
-             && (defined __mips_soft_float || defined __mips16)) \
-            || (defined __xtensa__ && defined __XTENSA_SOFT_FLOAT__))
-       #error FOO
-       #endif
+    if { [istarget mips*-*-*] || [istarget xtensa-*-*] } {
+       return [check_no_compiler_messages hard_float assembly {
+               #if ((defined __mips \
+                     && (defined __mips_soft_float || defined __mips16)) \
+                || (defined __xtensa__ && defined __XTENSA_SOFT_FLOAT__))
+               #error FOO
+               #endif
+       }]
+    }
+
+    # The generic test equates hard_float with "no call for adding doubles".
+    return [check_no_messages_and_pattern hard_float "!\\(call" rtl-expand {
+       double a (double b, double c) { return b + c; }
     }]
 }