target-supports.exp (check_ifunc_available): Rewrite.
authorUros Bizjak <ubizjak@gmail.com>
Fri, 22 Jul 2011 06:29:35 +0000 (08:29 +0200)
committerUros Bizjak <uros@gcc.gnu.org>
Fri, 22 Jul 2011 06:29:35 +0000 (08:29 +0200)
* lib/target-supports.exp (check_ifunc_available): Rewrite.

From-SVN: r176616

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

index a63b6474cbb870eafe7732bf72f52071e483a90c..bae0698f5a5bff3909771f27a1e37b6f0ed42725 100644 (file)
@@ -1,3 +1,7 @@
+2011-07-22  Uros Bizjak  <ubizjak@gmail.com>
+
+       * lib/target-supports.exp (check_ifunc_available): Rewrite.
+
 2011-07-21  Sebastian Pop  <sebastian.pop@amd.com>
 
        PR middle-end/47654
index bec4d6fd7623eff2729c969b523addd506a80262..97e54b2b0ce9a7bfd8bd7df9dd92804f86fb5f67 100644 (file)
@@ -361,45 +361,16 @@ proc check_alias_available { } {
     return $alias_available_saved
 }
 
-###############################
-# proc check_ifunc_available { }
-###############################
-
-# Determine if the target toolchain supports the ifunc attribute.
-
-# Returns 1 if the target supports ifunc.  Returns 0 if the target
-# does not support ifunc.
+# Returns 1 if the target supports ifunc, 0 otherwise.
 
 proc check_ifunc_available { } {
-    global ifunc_available_saved
-    global tool
-
-    if [info exists ifunc_available_saved] {
-        verbose "check_ifunc_available  returning saved $ifunc_available_saved" 2
-    } else {
-       set src ifunc[pid].c
-       set obj ifunc[pid].o
-        verbose "check_ifunc_available  compiling testfile $src" 2
-       set f [open $src "w"]
-       puts $f "#endif"
-       puts $f "#ifdef __cplusplus\nextern \"C\"\n#endif"
-       puts $f "void g() {}"
-       puts $f "void f() __attribute__((ifunc(\"g\")));"
-       close $f
-       set lines [${tool}_target_compile $src $obj object ""]
-       file delete $src
-       remote_file build delete $obj
-
-       if [string match "" $lines] then {
-           set ifunc_available_saved 1
-       } else {
-           set ifunc_available_saved 0
-       }
-
-       verbose "check_ifunc_available  returning $ifunc_available_saved" 2
-    }
-
-    return $ifunc_available_saved
+    return [check_no_compiler_messages ifunc_available object {
+       #ifdef __cplusplus
+       extern "C"
+       #endif
+       void g() {}
+       void f() __attribute__((ifunc("g")));
+    }]
 }
 
 # Returns true if --gc-sections is supported on the target.