On 17 Oct 17:10, Jakub Jelinek wrote: > On Fri, Oct 17, 2014 at 06:58:17PM +0400, Ilya Verbin wrote: > > Here in the original test you have: > > > > #pragma omp target if (v <= 1) > > if (omp_get_level () != 0 || (f && !omp_is_initial_device ())) > > abort (); > > #pragma omp target device (d) if (v <= 1) > > if (omp_get_level () != 0 || (f && !omp_is_initial_device ())) > > abort (); > > > > There are 2 same if-statements, but target pragmas have different clauses. > > The second depends on device (d), and (f && !omp_is_initial_device ()) works > > fine. But the first one doesn't depend on 'f', and if we have offload > > device, > > this check will fail. > > > > So, to have this test working both with offloading and fallback, we need to > > remove all pragmas without device-clause. > > Well, there is no need to remove them, just the " || (f && > !omp_is_initial_device ())" > should be dropped from target regions without device (d) on them. > Where there is no f && guard, the condition should stay. > Do you agree?
Yes, should I re-post the patch? -- Ilya