diff mbox series

[committed,omp,ftracer] Ignore IFN_GOMP_SIMT_XCHG_* in ignore_bb_p

Message ID 1d2453f0-6929-45a8-e903-b3eac317e1a3@suse.de
State New
Headers show
Series [committed,omp,ftracer] Ignore IFN_GOMP_SIMT_XCHG_* in ignore_bb_p | expand

Commit Message

Tom de Vries Oct. 5, 2020, 2:11 p.m. UTC
[ 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
diff mbox series

Patch

[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(-)

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;
     }