On Wed, Jan 21, 2026 at 4:52 PM Joseph Myers <[email protected]> wrote:
>
> Most gcc.dg/tree-prof tests work correctly in environments where .gcda
> files from the first run need to be copied from the target, because
> there is existing code in profopt-execute to do so.  A few tests using
> dg-additional-sources fail because that code only copies the .gcda
> file for the main test source file.  Add similar code to copy it for
> any sources listed in dg-additional-sources as well.
>
> The use of additional_sources_used is consistent with what
> profopt-target-cleanup does.  It turns out to require the added call
> to cleanup-after-saved-dg-test to avoid additional_sources_used
> leaking from one test into the next.
>
> Tested for x86_64-pc-linux-gnu to make sure native testing isn't
> broken, and with cross to aarch64-linux.
>
>         * lib/profopt.exp (profopt-execute): Also copy profile data from
>         target for additional sources.  Call cleanup-after-saved-dg-test
>         before normal return.

Ok.

>
> diff --git a/gcc/testsuite/lib/profopt.exp b/gcc/testsuite/lib/profopt.exp
> index 3188ba8a5348..c9f5ae53d499 100644
> --- a/gcc/testsuite/lib/profopt.exp
> +++ b/gcc/testsuite/lib/profopt.exp
> @@ -312,6 +312,7 @@ proc profopt-execute { src } {
>      global generate_final_code use_final_code
>      global verbose
>      global testname_with_flags
> +    global additional_sources_used
>
>      if ![info exists profile_option] {
>          error "No profile option specified for first compile."
> @@ -474,6 +475,19 @@ proc profopt-execute { src } {
>                     set missing_file 1
>                     fail "$testcase execution: file $bprefix$base.$ext does 
> not exist, $option $profile_option"
>                 }
> +               if [info exists additional_sources_used] {
> +                   foreach srcfile $additional_sources_used {
> +                       set add_basename [file tail $srcfile]
> +                       set add_base [file rootname $add_basename]
> +                       remote_upload target $tmpdir/$bprefix$add_base.$ext
> +                       set files [glob -nocomplain $bprefix$add_base.$ext]
> +                       if { $files == "" } {
> +                           set status "fail"
> +                           set missing_file 1
> +                           fail "$testcase execution: file 
> $bprefix$add_base.$ext does not exist, $option $profile_option"
> +                       }
> +                   }
> +               }
>             }
>         }
>          if { $missing_file == 0 } {
> @@ -606,4 +620,5 @@ proc profopt-execute { src } {
>         }
>      }
>      unset testname_with_flags
> +    cleanup-after-saved-dg-test
>  }
>
> --
> Joseph S. Myers
> [email protected]
>

Reply via email to