tree-prof.exp: Check for -fprofile-generate support.
authorRainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
Thu, 26 May 2011 10:33:06 +0000 (10:33 +0000)
committerRainer Orth <ro@gcc.gnu.org>
Thu, 26 May 2011 10:33:06 +0000 (10:33 +0000)
 gcov-profile/48845
* g++.dg/tree-prof/tree-prof.exp: Check for -fprofile-generate
support.
* gcc.dg/matrix/matrix.exp: Likewise.
* gcc.dg/tree-prof/tree-prof.exp: Likewise.
* lib/target-supports-dg.exp (dg-require-profiling): Don't pass
line number to check_profiling_available.
* lib/target-supports.exp (check_profiling_available): Account for
this.
Require TLS runtime support with -fprofile-generate.
* lib/profopt.exp (profopt-execute): Add TLS options for
-fprofile-generate.
* gcc.dg/pr47793.c: Add dg-require-profiling "-fprofile-generate".

From-SVN: r174275

gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/tree-prof/tree-prof.exp
gcc/testsuite/gcc.dg/matrix/matrix.exp
gcc/testsuite/gcc.dg/pr47793.c
gcc/testsuite/gcc.dg/tree-prof/tree-prof.exp
gcc/testsuite/lib/profopt.exp
gcc/testsuite/lib/target-supports-dg.exp
gcc/testsuite/lib/target-supports.exp

index db7d49dbb6883179f1e82241c3c076f4e078813d..5acf08e8c5c6bac273c21bef9ded3604537fbcf7 100644 (file)
@@ -1,3 +1,19 @@
+2011-05-26  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+       PR gcov-profile/48845
+       * g++.dg/tree-prof/tree-prof.exp: Check for -fprofile-generate
+       support.
+       * gcc.dg/matrix/matrix.exp: Likewise.
+       * gcc.dg/tree-prof/tree-prof.exp: Likewise.
+       * lib/target-supports-dg.exp (dg-require-profiling): Don't pass
+       line number to check_profiling_available.
+       * lib/target-supports.exp (check_profiling_available): Account for
+       this.
+       Require TLS runtime support with -fprofile-generate.
+       * lib/profopt.exp (profopt-execute): Add TLS options for
+       -fprofile-generate.
+       * gcc.dg/pr47793.c: Add dg-require-profiling "-fprofile-generate".
+
 2011-05-26  Jakub Jelinek  <jakub@redhat.com>
 
        PR c++/49165
index 92de03210ffdf81195a9a990394cb7411b56001e..0f69a16c902610468535b39ebb6c6a3ee9326c50 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2001, 2002, 2004, 2005, 2007, 2008
+# Copyright (C) 2001, 2002, 2004, 2005, 2007, 2008, 2011
 # Free Software Foundation, Inc.
 
 # This program is free software; you can redistribute it and/or modify
@@ -21,7 +21,7 @@
 load_lib target-supports.exp
 
 # Some targets don't support tree profiling.
-if { ![check_profiling_available ""] } {
+if { ![check_profiling_available "-fprofile-generate"] } {
     return
 }
 
index aae1988314328aadb3de9cd1960d7f5c004ad7d2..c1bf2713acc8d7c844f5d189dcfe68c69025f659 100644 (file)
@@ -1,4 +1,4 @@
-#   Copyright (C) 2001, 2002, 2004, 2005, 2007, 2010
+#   Copyright (C) 2001, 2002, 2004, 2005, 2007, 2010, 2011
 #   Free Software Foundation, Inc.
 
 # This program is free software; you can redistribute it and/or modify
@@ -31,7 +31,7 @@ dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/matrix-\[1-6\].\[cS\]]]  \
 dg-final
 
 # Some targets don't support tree profiling.
-if { ![check_profiling_available ""] } {
+if { ![check_profiling_available "-fprofile-generate"] } {
     return
 }
 
index da6b6eab64626466fd6c047667a8cd6329c0df29..0ee1aaee421b15fbcab6842ae94e692e1c255478 100644 (file)
@@ -1,6 +1,7 @@
 /* Bug pr47793: Allow relative paths in profile-generate.  */
 /* { dg-do run } */
 /* { dg-options "-O -fprofile-generate=./" } */
+/* { dg-require-profiling "-fprofile-generate" } */
 /* { dg-final { scan-file pr47793.gcda "."} } */
 
 int
index 9da5485b0d439ad6c9c18da8112d1f8a4aa3c380..2d054d23366c26fc908e732db7311f0b069207cb 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2001, 2002, 2004, 2005, 2007, 2008
+# Copyright (C) 2001, 2002, 2004, 2005, 2007, 2008, 2011
 # Free Software Foundation, Inc.
 
 # This program is free software; you can redistribute it and/or modify
@@ -21,7 +21,7 @@
 load_lib target-supports.exp
 
 # Some targets don't support tree profiling.
-if { ![check_profiling_available ""] } {
+if { ![check_profiling_available "-fprofile-generate"] } {
     return
 }
 
index 0155145e7865b7617e8277457b9392898e33b403..5e0f9a28ee1dbdf6e14c73888b600da4cec5a8fa 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2001, 2004, 2005, 2007, 2008, 2010
+# Copyright (C) 2001, 2004, 2005, 2007, 2008, 2010, 2011
 # Free Software Foundation, Inc.
 
 # This program is free software; you can redistribute it and/or modify
@@ -274,6 +274,12 @@ proc profopt-execute { src } {
 
         set extra_options [dg-additional-files-options "" "$src"]
 
+       # Tree profiling requires TLS runtime support, which may need
+       # additional flags.
+       if { [string first "-fprofile-generate" $profile_option] >= 0 } {
+           set extra_flags [add_options_for_tls $extra_flags]
+       }
+
        # Compile for profiling.
 
        set options "$extra_options"
index 3a2c0dc11415af03b1c5485ebcb434b1f99c3004..0e0252dcb4ab67b0a8e2bd1c3092e0eac76faff7 100644 (file)
@@ -113,7 +113,7 @@ proc dg-require-gc-sections { args } {
 # If this target does not support profiling, skip this test.
 
 proc dg-require-profiling { args } {
-    if { ![ check_profiling_available ${args} ] } {
+    if { ![ check_profiling_available [lindex $args 1] ] } {
        upvar dg-do-what dg-do-what
        set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"]
     }
index 6ede07494df79b259191379620f56a84390911b6..53990f6063144da0be51ee3f603703df69ff5a9b 100644 (file)
@@ -495,11 +495,16 @@ proc check_profiling_available { test_what } {
     # These conditions depend on the argument so examine them before
     # looking at the cache variable.
 
+    # Tree profiling requires TLS runtime support.
+    if { $test_what == "-fprofile-generate" } {
+       return [check_effective_target_tls_runtime]
+    }
+
     # Support for -p on solaris2 relies on mcrt1.o which comes with the
     # vendor compiler.  We cannot reliably predict the directory where the
     # vendor compiler (and thus mcrt1.o) is installed so we can't
     # necessarily find mcrt1.o even if we have it.
-    if { [istarget *-*-solaris2*] && [lindex $test_what 1] == "-p" } {
+    if { [istarget *-*-solaris2*] && $test_what == "-p" } {
        return 0
     }
 
@@ -508,32 +513,30 @@ proc check_profiling_available { test_what } {
     # Support for -pg on irix relies on gcrt1.o which doesn't exist yet.
     # See: http://gcc.gnu.org/ml/gcc/2002-10/msg00169.html
     if { [istarget mips*-*-irix*]
-    && ([lindex $test_what 1] == "-p" || [lindex $test_what 1] == "-pg") } {
+         && ($test_what == "-p" || $test_what == "-pg") } {
        return 0
     }
 
     # We don't yet support profiling for MIPS16.
     if { [istarget mips*-*-*]
         && ![check_effective_target_nomips16]
-        && ([lindex $test_what 1] == "-p"
-            || [lindex $test_what 1] == "-pg") } {
+        && ($test_what == "-p" || $test_what == "-pg") } {
        return 0
     }
 
     # MinGW does not support -p.
-    if { [istarget *-*-mingw*] && [lindex $test_what 1] == "-p" } {
+    if { [istarget *-*-mingw*] && $test_what == "-p" } {
        return 0
     }
 
     # cygwin does not support -p.
-    if { [istarget *-*-cygwin*] && [lindex $test_what 1] == "-p" } {
+    if { [istarget *-*-cygwin*] && $test_what == "-p" } {
        return 0
     }
 
     # uClibc does not have gcrt1.o.
     if { [check_effective_target_uclibc]
-        && ([lindex $test_what 1] == "-p"
-            || [lindex $test_what 1] == "-pg") } {
+        && ($test_what == "-p" || $test_what == "-pg") } {
        return 0
     }