On 10 October 2014 16:19, Jakub Jelinek <ja...@redhat.com> wrote: > On Fri, Oct 10, 2014 at 04:09:39PM +0200, Christophe Lyon wrote: >> my.exp contains the following construct which is often used in the testsuite: >> ========== >> 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 >> } >> c-torture-execute $src $additional_flags >> gcc-dg-runtest $src "" $additional_flags >> } >> ========== >> Note that gcc-dg-runtest calls runtest_file_p too. > > Such my.exp is invalid, you need to guarantee gcc_parallel_test_run_p > is run the same number of times in all instances unless > gcc_parallel_test_enable has been disabled.
Thanks for your prompt answer. Is this documented somewhere, so that such cases do not happen in the future? > See the patches I've posted when adding the fine-grained parallelization, > e.g. go testsuite has been fixed that way, etc. > So, in your above example, you'd need: > gcc_parallel_test_enable 0 > line before c-torture-execute and > gcc_parallel_test_enable 1 > line after gcc-dg-runtest. That way, if runtest_file_p says the test should > be scheduled by current instance, all the subtests will be run there. > > If my.exp is part of gcc/testsuite, I'm sorry for missing it, if it is > elsewhere, just fix it up. It's in a patch which has been under review for quite some time (started before your change), that's why you missed it. > Note, there are #verbose lines in gcc_parallel_test_run_p, you can uncomment > them and through sed on the log files verify that each instance performs the > same parallelization checks (same strings). Yep, I saw those and also added other traces of my own :-) What about my remark about: > # For parallelized check-% targets, this decides whether parallelization > # is desirable (if -jN is used and RUNTESTFLAGS doesn't contain anything > # but optional --target_board or --extra_opts arguments). If desirable, I think it should be removed from gcc/Makefile.in Thanks, Christophe.