Commit 4b557bcc by Tom de Vries Committed by Tom de Vries

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

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.

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.

From-SVN: r272189
parent 801b2266
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.
2019-06-12 Martin Liska <mliska@suse.cz> 2019-06-12 Martin Liska <mliska@suse.cz>
* ggc-common.c (ggc_prune_overhead_list): Do not sanitize * ggc-common.c (ggc_prune_overhead_list): Do not sanitize
......
...@@ -3258,6 +3258,7 @@ nvptx_find_par (bb_insn_map_t *map, parallel *par, basic_block block) ...@@ -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)); unsigned mask = UINTVAL (XVECEXP (PATTERN (end), 0, 0));
gcc_assert (par->mask == mask); gcc_assert (par->mask == mask);
gcc_assert (par->join_block == NULL);
par->join_block = block; par->join_block = block;
par->join_insn = end; par->join_insn = end;
if (nvptx_needs_shared_bcast (mask)) if (nvptx_needs_shared_bcast (mask))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment