Commit 3f5cb251 by Rainer Orth Committed by Rainer Orth

tree-prof.exp: Check for -fprofile-generate support.

 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
parent 1537737f
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> 2011-05-26 Jakub Jelinek <jakub@redhat.com>
PR c++/49165 PR c++/49165
......
# Copyright (C) 2001, 2002, 2004, 2005, 2007, 2008 # Copyright (C) 2001, 2002, 2004, 2005, 2007, 2008, 2011
# Free Software Foundation, Inc. # Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
load_lib target-supports.exp load_lib target-supports.exp
# Some targets don't support tree profiling. # Some targets don't support tree profiling.
if { ![check_profiling_available ""] } { if { ![check_profiling_available "-fprofile-generate"] } {
return return
} }
......
# Copyright (C) 2001, 2002, 2004, 2005, 2007, 2010 # Copyright (C) 2001, 2002, 2004, 2005, 2007, 2010, 2011
# Free Software Foundation, Inc. # Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify # 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\]]] \ ...@@ -31,7 +31,7 @@ dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/matrix-\[1-6\].\[cS\]]] \
dg-final dg-final
# Some targets don't support tree profiling. # Some targets don't support tree profiling.
if { ![check_profiling_available ""] } { if { ![check_profiling_available "-fprofile-generate"] } {
return return
} }
......
/* Bug pr47793: Allow relative paths in profile-generate. */ /* Bug pr47793: Allow relative paths in profile-generate. */
/* { dg-do run } */ /* { dg-do run } */
/* { dg-options "-O -fprofile-generate=./" } */ /* { dg-options "-O -fprofile-generate=./" } */
/* { dg-require-profiling "-fprofile-generate" } */
/* { dg-final { scan-file pr47793.gcda "."} } */ /* { dg-final { scan-file pr47793.gcda "."} } */
int int
......
# Copyright (C) 2001, 2002, 2004, 2005, 2007, 2008 # Copyright (C) 2001, 2002, 2004, 2005, 2007, 2008, 2011
# Free Software Foundation, Inc. # Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
load_lib target-supports.exp load_lib target-supports.exp
# Some targets don't support tree profiling. # Some targets don't support tree profiling.
if { ![check_profiling_available ""] } { if { ![check_profiling_available "-fprofile-generate"] } {
return return
} }
......
# Copyright (C) 2001, 2004, 2005, 2007, 2008, 2010 # Copyright (C) 2001, 2004, 2005, 2007, 2008, 2010, 2011
# Free Software Foundation, Inc. # Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
...@@ -274,6 +274,12 @@ proc profopt-execute { src } { ...@@ -274,6 +274,12 @@ proc profopt-execute { src } {
set extra_options [dg-additional-files-options "" "$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. # Compile for profiling.
set options "$extra_options" set options "$extra_options"
......
...@@ -113,7 +113,7 @@ proc dg-require-gc-sections { args } { ...@@ -113,7 +113,7 @@ proc dg-require-gc-sections { args } {
# If this target does not support profiling, skip this test. # If this target does not support profiling, skip this test.
proc dg-require-profiling { args } { proc dg-require-profiling { args } {
if { ![ check_profiling_available ${args} ] } { if { ![ check_profiling_available [lindex $args 1] ] } {
upvar dg-do-what dg-do-what upvar dg-do-what dg-do-what
set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"] set dg-do-what [list [lindex ${dg-do-what} 0] "N" "P"]
} }
......
...@@ -495,11 +495,16 @@ proc check_profiling_available { test_what } { ...@@ -495,11 +495,16 @@ proc check_profiling_available { test_what } {
# These conditions depend on the argument so examine them before # These conditions depend on the argument so examine them before
# looking at the cache variable. # 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 # 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. We cannot reliably predict the directory where the
# vendor compiler (and thus mcrt1.o) is installed so we can't # vendor compiler (and thus mcrt1.o) is installed so we can't
# necessarily find mcrt1.o even if we have it. # 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 return 0
} }
...@@ -508,32 +513,30 @@ proc check_profiling_available { test_what } { ...@@ -508,32 +513,30 @@ proc check_profiling_available { test_what } {
# Support for -pg on irix relies on gcrt1.o which doesn't exist yet. # 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 # See: http://gcc.gnu.org/ml/gcc/2002-10/msg00169.html
if { [istarget mips*-*-irix*] if { [istarget mips*-*-irix*]
&& ([lindex $test_what 1] == "-p" || [lindex $test_what 1] == "-pg") } { && ($test_what == "-p" || $test_what == "-pg") } {
return 0 return 0
} }
# We don't yet support profiling for MIPS16. # We don't yet support profiling for MIPS16.
if { [istarget mips*-*-*] if { [istarget mips*-*-*]
&& ![check_effective_target_nomips16] && ![check_effective_target_nomips16]
&& ([lindex $test_what 1] == "-p" && ($test_what == "-p" || $test_what == "-pg") } {
|| [lindex $test_what 1] == "-pg") } {
return 0 return 0
} }
# MinGW does not support -p. # MinGW does not support -p.
if { [istarget *-*-mingw*] && [lindex $test_what 1] == "-p" } { if { [istarget *-*-mingw*] && $test_what == "-p" } {
return 0 return 0
} }
# cygwin does not support -p. # cygwin does not support -p.
if { [istarget *-*-cygwin*] && [lindex $test_what 1] == "-p" } { if { [istarget *-*-cygwin*] && $test_what == "-p" } {
return 0 return 0
} }
# uClibc does not have gcrt1.o. # uClibc does not have gcrt1.o.
if { [check_effective_target_uclibc] if { [check_effective_target_uclibc]
&& ([lindex $test_what 1] == "-p" && ($test_what == "-p" || $test_what == "-pg") } {
|| [lindex $test_what 1] == "-pg") } {
return 0 return 0
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment