[committed,nvptx] Assert fork has at most one join in nvptx_find_par

Message ID 20190612150956.GA13805@delia
State New
Headers show
Series
  • [committed,nvptx] Assert fork has at most one join in nvptx_find_par
Related show

Commit Message

Tom de Vries June 12, 2019, 3:09 p.m.
Hi,

With the test-case of PR90009 we run into a SIGSEGV in nvptx_neuter_pars,
because par->join_insn and par->join_block are NULL.

Detect this problem earlier, by adding an assert in nvptx_find_par that
asserts that a fork cannot be paired with more than one join.

Build and tested on x86_64 with nvptx accelerator enabled.

Committed to trunk.

Thanks,
- Tom

[nvptx] Assert fork has at most one join in nvptx_find_par

2019-06-12  Tom de Vries  <tdevries@suse.de>

	PR tree-optimization/90009
	* config/nvptx/nvptx.c (nvptx_find_par): Assert fork has at most join.

---
 gcc/config/nvptx/nvptx.c | 1 +
 1 file changed, 1 insertion(+)

Patch

diff --git a/gcc/config/nvptx/nvptx.c b/gcc/config/nvptx/nvptx.c
index a28099ac89d..1e34be18f75 100644
--- a/gcc/config/nvptx/nvptx.c
+++ b/gcc/config/nvptx/nvptx.c
@@ -3258,6 +3258,7 @@  nvptx_find_par (bb_insn_map_t *map, parallel *par, basic_block block)
 	    unsigned mask = UINTVAL (XVECEXP (PATTERN (end), 0, 0));
 
 	    gcc_assert (par->mask == mask);
+	    gcc_assert (par->join_block == NULL);
 	    par->join_block = block;
 	    par->join_insn = end;
 	    if (nvptx_needs_shared_bcast (mask))