[ was: Re: [PATCH][omp, ftracer] Don't duplicate blocks in SIMT region ] On 10/5/20 10:51 AM, Alexander Monakov wrote: >> + if (is_gimple_call (g) >> + && (gimple_call_internal_p (g, IFN_GOMP_SIMT_ENTER_ALLOC) >> + || gimple_call_internal_p (g, IFN_GOMP_SIMT_EXIT) >> + || gimple_call_internal_p (g, IFN_GOMP_SIMT_VOTE_ANY))) > > Hm? So you are leaving SIMT_XCHG_* be until the next testcase breaks? >
Fixed in patch below, committed. Thanks, - Tom
[omp, ftracer] Ignore IFN_GOMP_SIMT_XCHG_* in ignore_bb_p As IFN_GOMP_SIMT_XCHG_* are part of the group marked by IFN_GOMP_SIMT_ENTER_ALLOC/IFN_GOMP_SIMT_EXIT, handle them conservatively in ignore_bb_p. Build on x86_64-linux with nvptx accelerator, tested with libgomp. gcc/ChangeLog: 2020-10-05 Tom de Vries <tdevr...@suse.de> * tracer.c (ignore_bb_p): Ignore GOMP_SIMT_XCHG_*. --- gcc/tracer.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/gcc/tracer.c b/gcc/tracer.c index 5ee66511f8d..7f32ccb7e21 100644 --- a/gcc/tracer.c +++ b/gcc/tracer.c @@ -115,12 +115,14 @@ ignore_bb_p (const_basic_block bb) /* An IFN_GOMP_SIMT_ENTER_ALLOC/IFN_GOMP_SIMT_EXIT call must be duplicated as part of its group, or not at all. - The IFN_GOMP_SIMT_VOTE_ANY is part of such a group, so the same holds - there. */ + The IFN_GOMP_SIMT_VOTE_ANY and IFN_GOMP_SIMT_XCHG_* are part of such a + group, so the same holds there. */ if (is_gimple_call (g) && (gimple_call_internal_p (g, IFN_GOMP_SIMT_ENTER_ALLOC) || gimple_call_internal_p (g, IFN_GOMP_SIMT_EXIT) - || gimple_call_internal_p (g, IFN_GOMP_SIMT_VOTE_ANY))) + || gimple_call_internal_p (g, IFN_GOMP_SIMT_VOTE_ANY) + || gimple_call_internal_p (g, IFN_GOMP_SIMT_XCHG_BFLY) + || gimple_call_internal_p (g, IFN_GOMP_SIMT_XCHG_IDX))) return true; }