[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 <tdevries@suse.de>
* tracer.c (ignore_bb_p): Ignore GOMP_SIMT_XCHG_*.
---
gcc/tracer.c | 8 +++++---
1 file changed, 5 insertions(+), 3 deletions(-)
@@ -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;
}