-# Copyright (C) 2001, 2002 Free Software Foundation, Inc.
+# Copyright (C) 2001, 2002, 2004 Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# Test the functionality of programs compiled with profile-directed block
# ordering using -fprofile-arcs followed by -fbranch-probabilities.
+load_lib target-supports.exp
+
+# Some targets don't have any implementation of __bb_init_func or are
+# missing other needed machinery.
+if { ![check_profiling_available "-fprofile-arcs"] } {
+ return
+}
+
# The procedures in profopt.exp need these parameters.
set tool g++
-set profile_option -fprofile-arcs
-set feedback_option -fbranch-probabilities
-set prof_ext da
+set prof_ext gcda
if $tracelevel then {
strace $tracelevel
# Load support procs.
load_lib profopt.exp
-# Clean up existing .da files.
-profopt-cleanup da
+set profile_options "-fprofile-arcs"
+set feedback_options "-fbranch-probabilities"
+if {[check_profiling_available "-ftree-based-profiling"]} {
+ lappend profile_options "-ftree-based-profiling -fprofile-arcs"
+ lappend feedback_options "-ftree-based-profiling -fbranch-probabilities"
+}
# Main loop.
-foreach src [lsort [glob -nocomplain $srcdir/$subdir/*.C]] {
- # If we're only testing specific files and this isn't one of them, skip it.
- if ![runtest_file_p $runtests $src] then {
- continue
+foreach profile_option $profile_options feedback_option $feedback_options {
+ foreach src [lsort [glob -nocomplain $srcdir/$subdir/*.C]] {
+ # If we're only testing specific files and this isn't one of them, skip it.
+ if ![runtest_file_p $runtests $src] then {
+ continue
+ }
+ profopt-execute $src
}
-
- profopt-execute $src
}