aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/nvptx
diff options
context:
space:
mode:
authorTom de Vries <tdevries@suse.de>2019-06-12 14:56:18 +0000
committerTom de Vries <vries@gcc.gnu.org>2019-06-12 14:56:18 +0000
commit4b557bcc0d0674011a45ad259f44b9830289bd1f (patch)
tree9c900c856462b917ba7a9bcb05137ff823f9874a /gcc/config/nvptx
parent801b2266dee7bc669bcab0ff645a0b36fa9dcfd5 (diff)
downloadgcc-4b557bcc0d0674011a45ad259f44b9830289bd1f.zip
gcc-4b557bcc0d0674011a45ad259f44b9830289bd1f.tar.gz
gcc-4b557bcc0d0674011a45ad259f44b9830289bd1f.tar.bz2
[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
Diffstat (limited to 'gcc/config/nvptx')
-rw-r--r--gcc/config/nvptx/nvptx.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/gcc/config/nvptx/nvptx.c b/gcc/config/nvptx/nvptx.c
index 1986e79..76468f6 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))