From a50575432b41b3bc3b0a14cb2e6e53881941a99f Mon Sep 17 00:00:00 2001 From: Martin Jambor Date: Mon, 23 May 2016 13:45:13 +0200 Subject: [hsa] Avoid segfault in hsa switch expansion 2016-05-23 Martin Jambor * hsa-gen.c (gen_hsa_insns_for_switch_stmt): Create an empty default block if a PHI node in the original one would be resized. libgomp/ * testsuite/libgomp.hsa.c/switch-sbr-2.c: New test. From-SVN: r236585 --- gcc/hsa-gen.c | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'gcc/hsa-gen.c') diff --git a/gcc/hsa-gen.c b/gcc/hsa-gen.c index 697d599..cf7d434 100644 --- a/gcc/hsa-gen.c +++ b/gcc/hsa-gen.c @@ -3482,6 +3482,12 @@ gen_hsa_insns_for_switch_stmt (gswitch *s, hsa_bb *hbb) basic_block default_label_bb = label_to_block_fn (func, CASE_LABEL (default_label)); + if (!gimple_seq_empty_p (phi_nodes (default_label_bb))) + { + default_label_bb = split_edge (find_edge (e->dest, default_label_bb)); + hsa_init_new_bb (default_label_bb); + } + make_edge (e->src, default_label_bb, EDGE_FALSE_VALUE); hsa_cfun->m_modified_cfg = true; -- cgit v1.1