On Fri, Nov 14, 2014 at 11:14:59AM +0100, Richard Biener wrote: > On Thu, Nov 13, 2014 at 10:47 PM, Jakub Jelinek <ja...@redhat.com> wrote: > > On Thu, Nov 13, 2014 at 11:53:53PM +0300, Ilya Verbin wrote: > >> > Don't you need another plugin to claim those offload IR sections? > >> > >> No, the plan was that a regular plugin will just ignore offload IR > >> sections by default. In your configuration ld detects a __gnu_lto_slim > >> symbol and decided that the object file contains only LTO IR without asm. > >> I am going to investigate where is the difference with my configuration > >> and fix the bug. > > > > FYI, I'm getting > > +WARNING: program timed out. > > +FAIL: libgomp.c/examples-4/e.54.2.c execution test > > on both x86_64-linux and i686-linux (normal --enable-checking=yes,rtl > > bootstrap, no offloading configure options). > > binutils-2.24, ld.bfd. > > Me too, with default checking (timeouts are really annoying....).
So, it turns out that the problem is in heavily parallel testing that these two testcases spawn just way too many #pragma omp parallels in sequence (32768), unnecessarily so. And, with the default partial busy waiting (something in between OMP_WAIT_POLICY=passive and active) if too often when some threads busy wait on some barrier big amounts of other jobs (other tests) contend for the CPUs, it means the test can run for minutes, while normally it takes 0.5s. Fixed thusly, committed to trunk. With all the additions to the libgomp test, seems even on a fast box (but with heavy contention) libgomp testing now takes already 30 minutes or so, I guess I should play with the possibility to set OMP_WAIT_POLICY=passive for libgomp testing in the environment of the tests, e.g. if make -jN was used (and keep the default wait policy if it wasn't). 2014-11-14 Jakub Jelinek <ja...@redhat.com> * libgomp.c/examples-4/e.54.2.c (main): Use N / 8 instead of 32 as block_size. * libgomp.fortran/examples-4/e.54.2.f90 (e_54_1): Use n / 8 instead of 32 as block_size. --- libgomp/testsuite/libgomp.c/examples-4/e.54.2.c.jj 2014-11-13 15:13:18.000000000 +0100 +++ libgomp/testsuite/libgomp.c/examples-4/e.54.2.c 2014-11-14 15:07:07.428485712 +0100 @@ -61,7 +61,7 @@ int main () init (v1, v2, N); p1 = dotprod_ref (v1, v2, N); - p2 = dotprod (v1, v2, N, 32, 2, 8); + p2 = dotprod (v1, v2, N, N / 8, 2, 8); check (p1, p2); --- libgomp/testsuite/libgomp.fortran/examples-4/e.54.2.f90.jj 2014-11-13 15:13:17.000000000 +0100 +++ libgomp/testsuite/libgomp.fortran/examples-4/e.54.2.f90 2014-11-14 15:08:41.471776859 +0100 @@ -59,7 +59,7 @@ program e_54_1 allocate (B(n), C(n)) call init (B, C, n) ref = dotprod_ref (B, C, n) - d = dotprod (B, C, n, 32, 2, 8) + d = dotprod (B, C, n, n / 8, 2, 8) call check (ref, d) deallocate (B, C) end program Jakub